COMBINEVALUES
Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual
Junta duas or mais cadeias de texto em uma cadeia de texto. O objetivo principal dessa função é oferecer suporte a relações de várias colunas em modelos DirectQuery. Ver observações para mais pormenores.
Sintaxe
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parâmetros
Vigência | Definição |
---|---|
delimiter |
Um separador para usar durante a concatenação. Deve ser uma constante value. |
expression |
Uma expressão DAX cujos value serão unidos em uma única cadeia de texto. |
Regresso value
Uma cadeia de caracteres concatenada.
Comentários
A função COMBINEVALUES assume, mas not valida, que quando os values de entrada são diferentes, as cadeias de caracteres de saída também são diferentes. Com base nessa suposição, quando COMBINEVALUES é usado para criar colunas calculadas para criar uma relação que une várias colunas de duas tabelas DirectQuery, uma condição de junção otimizada é gerada na consulta time. Por exemplo, if os usuários desejam criar uma relação entre Tabela1(Coluna1, Coluna2) and Tabela2(Coluna1, Coluna2), eles podem criar duas colunas calculadas, uma em cada tabela, como:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
and
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
And então criar uma relação entre
Table1[CalcColumn]
andTable2[CalcColumn]
. Ao contrário de outras funções and operadores DAX, que são traduzidos literalmente para os operadores and funções SQL correspondentes, a relação acima gera um predicado de junção SQL como:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
and
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
O predicado de junção pode potencialmente oferecer um desempenho de consulta muito melhor do que um que envolve operadores and funções SQL complexas.
A função COMBINEVALUES depende que os usuários escolham o delimitador apropriado para garantir que combinações exclusivas de values de entrada produzam cadeias de caracteres de saída distintas, mas not valida que a suposição é true. Por exemplo, if os usuários escolhem
"| "
como o delimitador, mas uma linha na Tabela 1 temTable1[Column1] = "| "
andTable2 [Column2] = " "
, enquanto uma linha na Tabela 2 temTable2[Column1] = " "
andTable2[Column2] = "| "
, as duas saídas concatenadas serão as mesmas"|| "
, o que parece indicar que as duas linhas são uma correspondência na operação de junção. As duas linhas são not unidas if ambas as tabelas são da mesma fonte do DirectQuery, embora sejam unidas if ambas as tabelas são importadas.
Exemplo
O seguinte DAX consulta:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Devolve a seguinte tabela de coluna única:
[Month] |
---|
Janeiro, 2020 |
Fevereiro, 2020 |
Março de 2020 |
Abril, 2020 |
Maio, 2020 |
Junho, 2020 |
Julho de 2020 |
Agosto, 2020 |
Setembro, 2020 |
Outubro, 2020 |
Novembro, 2020 |
Dezembro, 2020 |
Janeiro, 2021 |
Janeiro, 2021 |
Fevereiro, 2021 |
Março, 2021 |
Abril, 2021 |
Maio, 2021 |
Junho, 2021 |
Julho, 2021 |
Agosto, 2021 |
Setembro, 2021 |
Outubro, 2021 |
Novembro, 2021 |
Dezembro, 2021 |