Sdílet prostřednictvím


COMBINEVALUES

platí pro:počítaný sloupecPočítaná tabulkaMeasure vizuálu

Spojí dva or 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í být konstantní value.
expression Výraz DAX, jehož value se spojí do jednoho textového řetězce.

Vrácení value

Zřetězený řetězec.

Poznámky

  • Funkce COMBINEVALUES předpokládá, ale not ověří, že když se vstupní values 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á spojuje více sloupců ze dvou tabulek DirectQuery, se vygeneruje optimalizovaná podmínka spojení při dotazu time. Například if uživatelé chtějí vytvořit relaci mezi tabulkou1(Sloupec1, Sloupec2) and Tabulka2(Sloupec1; Sloupec2), mohou vytvořit dva počítané sloupce, jeden pro každou tabulku, jako:

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

    and

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

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

    (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)
    
  • Predikát spojení může potenciálně přinést mnohem lepší výkon dotazů než ten, který zahrnuje složité operátory SQL and funkce.

  • Funkce COMBINEVALUES spoléhá na uživatele, aby zvolili odpovídající oddělovač, aby se zajistilo, že jedinečné kombinace vstupních values vytvoří jedinečné výstupní řetězce, ale not ověří, že předpoklad je true. Například if uživatelé zvolí "| " jako oddělovač, ale jeden řádek v Tabulce1 má Table1[Column1] = "| "andTable2 [Column2] = " ", zatímco jeden řádek v tabulce2 má Table2[Column1] = " "andTable2[Column2] = "| ", dva zřetězené výstupy budou stejné "|| ", což vypadá, že dva řádky jsou v operaci spojení shoda. Dva řádky jsou not vzájemně spojené if obě tabulky pocházejí ze stejného zdroje DirectQuery, i když jsou vzájemně spojené if obě tabulky se importují.

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:

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