COMBINEVALUES
gælder for:beregnet kolonne
beregnet tabel
beregning af måling
visualisering
Joinforbinder to eller flere tekststrenge til én tekststreng. Det primære formål med denne funktion er at understøtte relationer med flere kolonner i DirectQuery-modeller. Se bemærkninger for at få flere oplysninger.
Syntaks
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parametre
Udtryk | Definition |
---|---|
delimiter |
En separator, der skal bruges under sammenkædning. Skal være en konstant værdi. |
expression |
Et DAX udtryk, hvis værdi joinforbindes til en enkelt tekststreng. |
Returværdi
En sammenkædet streng.
Bemærkninger
Funktionen COMBINEVALUES antager, men validerer ikke, at outputstrengene også er forskellige, når inputværdierne er forskellige. Når COMBINEVALUES bruges til at oprette beregnede kolonner for at oprette en relation, der joinforbinder flere kolonner fra to DirectQuery-tabeller, oprettes der på forespørgselstidspunktet en optimeret joinforbindelsesbetingelse baseret på denne antagelse. Hvis brugerne f.eks. vil oprette en relation mellem Table1(Column1, Column2) og Table2(Column1, Column2), kan de oprette to beregnede kolonner, én i hver tabel, som:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
og
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
Og opret derefter en relation mellem
Table1[CalcColumn]
ogTable2[CalcColumn]
. I modsætning til andre DAX funktioner og operatorer, som bogstaveligt talt oversættes til de tilsvarende SQL-operatorer og -funktioner, genererer ovenstående relation et PRÆdikat for SQL-joinforbindelse som:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
og
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
Prædikatet Joinforbindelse kan potentielt levere meget bedre forespørgselsydeevne end en, der omfatter komplekse SQL-operatorer og -funktioner.
Funktionen COMBINEVALUES er afhængig af, at brugerne vælger den relevante afgrænser for at sikre, at entydige kombinationer af inputværdier producerer særskilte outputstrenge, men den validerer ikke, at antagelsen er sand. Hvis brugerne f.eks. vælger
"| "
som afgrænser, men én række i Table1 harTable1[Column1] = "| "
ogTable2 [Column2] = " "
, mens én række i Table2 harTable2[Column1] = " "
ogTable2[Column2] = "| "
, vil de to sammenkædede output være de samme"|| "
, hvilket synes at indikere, at de to rækker stemmer overens i joinhandlingen. De to rækker joinforbindes ikke, hvis begge tabeller er fra den samme DirectQuery-kilde, selvom de er joinforbundet, hvis begge tabeller importeres.
Eksempel
Følgende DAX forespørgsel:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Returnerer følgende tabel med én kolonne:
[Måned] |
---|
Januar 2020 |
Februar 2020 |
Marts 2020 |
April 2020 |
Maj 2020 |
Juni 2020 |
Juli 2020 |
August 2020 |
September, 2020 |
Oktober 2020 |
November, 2020 |
December 2020 |
Januar 2021 |
Januar 2021 |
Februar 2021 |
Marts 2021 |
April 2021 |
Maj 2021 |
Juni 2021 |
Juli 2021 |
August 2021 |
September, 2021 |
Oktober, 2021 |
November, 2021 |
December 2021 |