COMBINEVALUES
Vzťahuje sa na:vypočítaný stĺpec
vypočítanej tabuľky
vizuálového výpočtu
Spojí dva alebo viacero textových reťazcov do jedného. Hlavným účelom tejto funkcie je podpora vzťahov medzi viacerými stĺpcami v modeloch DirectQuery. Podrobnosti nájdete v
Syntax
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parametre
Termín | Definícia |
---|---|
delimiter |
Oddeľovač, ktorý sa používa počas zreťazenia. Musí to byť konštantná hodnota. |
expression |
Výraz DAX, ktorého hodnota sa spojí do jedného textového reťazca. |
Vrátená hodnota
Zreťazený reťazec.
Poznámky
Funkcia COMBINEVALUES predpokladá, že keď sú vstupné hodnoty odlišné, odlišné sú aj výstupné reťazce, no neoveruje overenie. Na základe tohto predpokladu, keď sa COMBINEVALUES použije na vytvorenie vypočítaných stĺpcov na vytvorenie vzťahu, ktorý spojí viacero stĺpcov z dvoch tabuliek DirectQuery, v čase dotazu sa vygeneruje optimalizovaná podmienka spojenia. Ak napríklad chcú používatelia vytvoriť vzťah medzi tabuľkami Table1(Column1, Column2) a Table2(Column1, Column2), môžu vytvoriť dva vypočítané stĺpce, po jednom na každú tabuľku, takto:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
a
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
A potom vytvorte vzťah medzi
Table1[CalcColumn]
aTable2[CalcColumn]
. Na rozdiel od iných funkcií a operátorov DAX, ktoré sa doslovne prekladajú do príslušných operátorov a funkcií SQL, vyššie uvedený vzťah vygeneruje predikát spojenia SQL ako:(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 spojenia môže potenciálne poskytovať oveľa vyšší výkon dotazu ako ten, ktorý zahŕňa zložité operátory a funkcie SQL.
Funkcia COMBINEVALUES sa spolieha na to, že používatelia zvolia vhodný oddeľovač, ktorý zabezpečí, aby jedinečné kombinácie vstupných hodnôt vytvárali odlišné výstupné reťazce, no neoveruje, či je tento predpoklad pravdivý. Ak napríklad používatelia zvolia ako oddeľovač
"| "
, ale jeden riadok v tabuľke Table1Table1[Column1] = "| "
aTable2 [Column2] = " "
, zatiaľ čo jeden riadok v tabuľke Table2 máTable2[Column1] = " "
aTable2[Column2] = "| "
, dva zreťazené výstupy budú rovnakými"|| "
, čo naznačuje, že tieto dva riadky sa v operácii spojenia zhodujú. Tieto dva riadky sa spoja, ak obe tabuľky pochádzajú z rovnakého zdroja DirectQuery, ale spoja sa, ak sú obe tabuľky importované.
Príklad
Nasledujúci DAX dotaz:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Vráti nasledujúcu tabuľku s jedným stĺpcom:
[Mesiac] |
---|
Január, 2020 |
Február 2020 |
Marec, 2020 |
Apríl, 2020 |
Máj 2020 |
Jún, 2020 |
Júl 2020 |
August 2020 |
September 2020 |
Október 2020 |
November 2020 |
December, 2020 |
Január, 2021 |
Január, 2021 |
Február 2021 |
Marec, 2021 |
Apríl, 2021 |
Máj 2021 |
Jún, 2021 |
Júl 2021 |
August 2021 |
September, 2021 |
Október 2021 |
November 2021 |
December, 2021 |