COMBINEVALUES
Aplica-se a: Coluna calculada Tabela calculada Medida Cálculo visual
une duas cadeias de cadeia de caracteres de texto em uma. A principal finalidade dessa função é oferecer compatibilidade com relacionamentos multicoluna em modelos DirectQuery. Consulte Comentários para obter detalhes.
Sintaxe
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parâmetros
Termo | Definição |
---|---|
delimitador | Um separador a ser usado durante a concatenação. Deve ser um valor constante. |
expressão | Uma expressão DAX cujo valor será unido em uma só cadeia de texto. |
Valor retornado
Uma cadeia de caracteres concatenada.
Comentários
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 desejarem 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])
Em seguida, crie uma relação entre
Table1[CalcColumn]
eTable2[CalcColumn]
. Ao contrário de outras funções e operadores DAX, que são traduzidos literalmente para as funções e operadores 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 proporcionar um desempenho de consulta muito melhor que um que envolva operadores e funções SQL complexos.
A função COMBINEVALUES baseia-se em 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 validam que a suposição é verdadeira. Por exemplo, se os usuários escolherem
"| "
como o delimitador, mas uma linha em Table1 tiverTable1[Column1] = "| "
eTable2 [Column2] = " "
, enquanto uma linha em Table2 tiverTable2[Column1] = " "
eTable2[Column2] = "| "
, as duas saídas concatenadas serão a mesma"|| "
, o que parece indicar que há uma correspondência das duas linhas 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 sejam unidas em conjunto se ambas as tabelas forem importadas.
Exemplo
A seguinte consulta DAX:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Retorna a seguinte tabela de coluna única:
[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 |