Sdílet prostřednictvím


COMBINEVALUES

platí pro:Počítaný sloupecPočítaná tabulkamíravizuální

Spojí dva nebo více textových řetězců do jednoho textového řetězce. Primárním účelem této funkce je podpora relací s více sloupci v modelech DirectQuery. Podrobnosti najdete v poznámkách.

Syntax

COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)

Parametry

Semestr Definice
delimiter Oddělovač, který se má použít při zřetězení. Musí to být konstantní hodnota.
expression Výraz DAX, jehož hodnota se spojí do jednoho textového řetězce.

Návratová hodnota

Zřetězený řetězec.

Poznámky

  • Funkce COMBINEVALUES předpokládá, ale neověřuje, že pokud se vstupní hodnoty liší, výstupní řetězce se také liší. Na základě tohoto předpokladu se při použití COMBINEVALUES k vytvoření počítaných sloupců k vytvoření relace, která spojí více sloupců ze dvou tabulek DirectQuery, se vygeneruje optimalizovaná podmínka spojení v době dotazu. Pokud například uživatelé chtějí vytvořit relaci mezi tabulkou1(Sloupec1, Sloupec2) a Table2(Column1; Column2), můžou vytvořit dva počítané sloupce, jeden pro každou tabulku, jako:

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

    a

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

    A pak vytvořte relaci mezi Table1[CalcColumn] a Table2[CalcColumn]. Na rozdíl od jiných DAX funkcí a operátorů, které jsou přeloženy doslova na odpovídající operátory a funkce SQL, výše uvedený vztah generuje predikát spojení SQL jako:

    (Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
    

    a

    (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
    
  • Predikát spojení může potenciálně přinést mnohem lepší výkon dotazů než ten, který zahrnuje složité operátory a funkce SQL.

  • Funkce COMBINEVALUES spoléhá na uživatele, aby zvolili odpovídající oddělovač, aby se zajistilo, že jedinečné kombinace vstupních hodnot vytvářejí jedinečné výstupní řetězce, ale neověřuje, že je předpoklad pravdivý. Pokud například uživatelé zvolí "| " jako oddělovač, ale jeden řádek v tabulce1 má Table1[Column1] = "| " a Table2 [Column2] = " ", zatímco jeden řádek v tabulce2 má Table2[Column1] = " " a Table2[Column2] = "| ", dva zřetězené výstupy budou stejné "|| ", což vypadá, že dva řádky jsou v operaci spojení shody. Tyto dva řádky nejsou spojeny, pokud obě tabulky pocházejí ze stejného zdroje DirectQuery, i když jsou spojené dohromady, pokud jsou obě tabulky importovány.

Příklad

Následující dotaz DAX:

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

Vrátí následující tabulku s jedním sloupcem:

[Měsíc]
Leden 2020
Únor 2020
Březen 2020
Duben 2020
Květen 2020
Červen 2020
Červenec 2020
Srpen 2020
Září 2020
Říjen 2020
Listopad 2020
Prosince 2020
Leden 2021
Leden 2021
Únor 2021
Březen 2021
Duben 2021
Květen 2021
Červen 2021
Červenec 2021
Srpen 2021
Září 2021
Říjen 2021
Listopad 2021
Prosince 2021