COMBINEVALUES
Aplica-se a:Coluna calculada
Tabela calculada
Medida
Cálculo visual
Junta duas ou 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 um valor constante. |
expression |
Uma expressão DAX cujo valor será unido em uma única cadeia de caracteres de texto. |
Valor de retorno
Uma cadeia de caracteres concatenada.
Comentários
A função COMBINEVALUES assume, mas não valida, que quando os valores 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 no momento da consulta. Por exemplo, se os usuários quiserem criar uma relação entre Tabela1(Coluna1, Coluna2) e Tabela2(Coluna1, Coluna2), eles poderão criar duas colunas calculadas, uma em cada tabela, como:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
e ainda
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
E depois criar uma relação entre
Table1[CalcColumn]
eTable2[CalcColumn]
. Ao contrário de outras funções e operadores DAX, que são traduzidos literalmente para os operadores e 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)
e ainda
(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 e funções SQL complexos.
A função COMBINEVALUES depende que os usuários escolham o delimitador apropriado para garantir que combinações exclusivas de valores de entrada produzam cadeias de caracteres de saída distintas, mas não valida que a suposição seja verdadeira. Por exemplo, se os usuários escolherem
"| "
como o delimitador, mas uma linha na Tabela 1 tiverTable1[Column1] = "| "
eTable2 [Column2] = " "
, enquanto uma linha na Tabela 2 tiverTable2[Column1] = " "
eTable2[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 não serão unidas se ambas as tabelas forem da mesma fonte do DirectQuery, embora sejam unidas se ambas as tabelas forem importadas.
Exemplo
O seguinte DAX consulta:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Devolve a seguinte tabela de coluna única:
[Mês] |
---|
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 |