COMBINEVALUES
aplica-se a:coluna calculadatabela calculadamedidacálculo visual
Une duas ou mais cadeias de texto em uma cadeia de caracteres de texto. A principal finalidade dessa função é dar suporte a relações de várias colunas em modelos DirectQuery. Consulte comentários para obter detalhes.
Sintaxe
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parâmetros
Prazo | Definição |
---|---|
delimiter |
Um separador a ser usado 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.
Observações
A função COMBINEVALUES pressupõe, 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 Table1(Column1, Column2) e Table2(Column1, Column2), eles poderão criar duas colunas calculadas, uma em cada tabela, como:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
e
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
E, em seguida, crie uma relação entre
Table1[CalcColumn]
eTable2[CalcColumn]
. Ao contrário de outras funções e operadores DAX, que são convertidos 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
(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 funções e operadores SQL complexos.
A função COMBINEVALUES conta com os usuários para escolher 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 é verdadeira. Por exemplo, se os usuários escolherem
"| "
como delimitador, mas uma linha no Table1 tiverTable1[Column1] = "| "
eTable2 [Column2] = " "
, enquanto uma linha na Tabela2 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 origem do DirectQuery, embora estejam unidas se ambas as tabelas forem importadas.
Exemplo
A seguinte consulta DAX:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Retorna a tabela de coluna única a seguir:
[Mês] |
---|
Janeiro de 2020 |
Fevereiro de 2020 |
Março de 2020 |
Abril de 2020 |
Maio de 2020 |
Junho de 2020 |
Julho de 2020 |
Agosto de 2020 |
Setembro de 2020 |
Outubro de 2020 |
Novembro de 2020 |
Dezembro de 2020 |
Janeiro de 2021 |
Janeiro de 2021 |
Fevereiro de 2021 |
Março de 2021 |
Abril de 2021 |
Maio de 2021 |
Junho de 2021 |
Julho de 2021 |
Agosto de 2021 |
Setembro de 2021 |
Outubro de 2021 |
Novembro de 2021 |
Dezembro de 2021 |