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 |