Compartilhar via


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] e Table2[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 tiver Table1[Column1] = "| " e Table2 [Column2] = " ", enquanto uma linha em Table2 tiver Table2[Column1] = " " e Table2[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