Partilhar via


COMBINEVALUES

Aplica-se a:Coluna calculadaTabela calculadaMedidaCá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] e Table2[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 tiver Table1[Column1] = "| " e Table2 [Column2] = " ", enquanto uma linha na Tabela 2 tiver Table2[Column1] = " " e Table2[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