Partilhar via


COMBINEVALUES

Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual

Junta duas or 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 uma constante value.
expression Uma expressão DAX cujos value serão unidos em uma única cadeia de texto.

Regresso value

Uma cadeia de caracteres concatenada.

Comentários

  • A função COMBINEVALUES assume, mas not valida, que quando os values 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 na consulta time. Por exemplo, if os usuários desejam criar uma relação entre Tabela1(Coluna1, Coluna2) and Tabela2(Coluna1, Coluna2), eles podem criar duas colunas calculadas, uma em cada tabela, como:

    Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
    

    and

    Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
    

    And então criar uma relação entre Table1[CalcColumn]andTable2[CalcColumn]. Ao contrário de outras funções and operadores DAX, que são traduzidos literalmente para os operadores and 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)
    

    and

    (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 and funções SQL complexas.

  • A função COMBINEVALUES depende que os usuários escolham o delimitador apropriado para garantir que combinações exclusivas de values de entrada produzam cadeias de caracteres de saída distintas, mas not valida que a suposição é true. Por exemplo, if os usuários escolhem "| " como o delimitador, mas uma linha na Tabela 1 tem Table1[Column1] = "| "andTable2 [Column2] = " ", enquanto uma linha na Tabela 2 tem Table2[Column1] = " "andTable2[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 são not unidas if ambas as tabelas são da mesma fonte do DirectQuery, embora sejam unidas if ambas as tabelas são importadas.

Exemplo

O seguinte DAX consulta:

EVALUATE
DISTINCT (
    SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)

Devolve a seguinte tabela de coluna única:

[Month]
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