COMBINEVALUES
Gjelder for: Beregnet beregning av beregnet tabell for beregnet tabell Mål visualobjekt
Slår sammen to eller flere tekststrenger i én tekststreng. Hovedformålet med denne funksjonen er å støtte flerkolonnerelasjoner i DirectQuery-modeller. Se Merknader for mer informasjon.
Syntaks
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parametere
Term | Definisjon |
---|---|
Skilletegn | Et skilletegn som skal brukes under sammenkobling. Må være en konstant verdi. |
uttrykk | Et DAX-uttrykk der verdien vil bli koblet til én enkelt tekststreng. |
Returverdi
En sammenføyd streng.
Merknader
COMBINEVALUES-funksjonen forutsetter, men validerer ikke, at når inndataverdiene er forskjellige, er utdatastrengene også forskjellige. Basert på denne antagelsen, når COMBINEVALUES brukes til å opprette beregnede kolonner for å bygge en relasjon som føyer sammen flere kolonner fra to DirectQuery-tabeller, genereres en optimalisert sammenføyningsbetingelse ved spørringstidspunktet. Hvis brukere for eksempel vil opprette en relasjon mellom Tabell1(Kolonne1, Kolonne2) og Tabell2(Kolonne1, Kolonne2), kan de opprette to beregnede kolonner, én i hver tabell, som:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
og
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
Og opprett deretter en relasjon mellom
Table1[CalcColumn]
ogTable2[CalcColumn]
. I motsetning til andre DAX-funksjoner og operatorer, som oversettes bokstavelig talt til tilsvarende SQL-operatorer og -funksjoner, genererer relasjonen ovenfor et SQL-sammenføyningspredikat 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)
Sammenføyningspredikatet kan potensielt gi mye bedre spørringsytelse enn en som involverer komplekse SQL-operatorer og funksjoner.
COMBINEVALUES-funksjonen er avhengig av at brukerne velger riktig skilletegn for å sikre at unike kombinasjoner av inndataverdier produserer distinkte utdatastrenger, men det validerer ikke at antagelsen er sann. Hvis brukere for eksempel velger
"| "
som skilletegn, men én rad i Tabell1 harTable1[Column1] = "| "
ogTable2 [Column2] = " "
, mens én rad i Tabell2 harTable2[Column1] = " "
ogTable2[Column2] = "| "
, vil de to sammenkoblede utdataene være de samme"|| "
, noe som ser ut til å indikere at de to radene samsvarer i sammenføyningsoperasjonen. De to radene er ikke sammenføyd hvis begge tabellene er fra samme DirectQuery-kilde, selv om de er koblet sammen hvis begge tabellene importeres.
Eksempel
Følgende DAX-spørring:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Returnerer følgende tabell med én kolonne:
[Måned] |
---|
Januar 2020 |
Februar 2020 |
Mars, 2020 |
April, 2020 |
Mai 2020 |
Juni 2020 |
Juli 2020 |
August, 2020 |
September, 2020 |
Oktober 2020 |
November, 2020 |
Desember 2020 |
Januar, 2021 |
Januar, 2021 |
February, 2021 |
Mars, 2021 |
April, 2021 |
Mai 2021 |
Juni, 2021 |
Juli, 2021 |
August, 2021 |
September, 2021 |
Oktober, 2021 |
November, 2021 |
Desember 2021 |