COMBINEVALUES
gäller för:beräknad kolumn
beräknad tabell
Mått
Visuell beräkning
Kopplar två eller flera textsträngar till en textsträng. Det primära syftet med den här funktionen är att stödja relationer med flera kolumner i DirectQuery-modeller. Mer information finns i kommentarer.
Syntax
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parametrar
Term | Definition |
---|---|
delimiter |
En avgränsare som ska användas vid sammanfogning. Måste vara ett konstant värde. |
expression |
Ett DAX uttryck vars värde ska kopplas till en enda textsträng. |
Returvärde
En sammanfogad sträng.
Anmärkningar
Funktionen COMBINEVALUES förutsätter, men validerar inte, att utdatasträngarna också skiljer sig när indatavärdena skiljer sig åt. Baserat på det här antagandet genereras ett optimerat kopplingsvillkor vid frågetillfället när COMBINEVALUES används för att skapa beräknade kolumner för att skapa en relation som sammanfogar flera kolumner från två DirectQuery-tabeller. Om användarna till exempel vill skapa en relation mellan Table1(Column1, Column2) och Table2(Column1, Column2) kan de skapa två beräknade kolumner, en i varje tabell, som:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
och
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
Skapa sedan en relation mellan
Table1[CalcColumn]
ochTable2[CalcColumn]
. Till skillnad från andra DAX funktioner och operatorer, som bokstavligen översätts till motsvarande SQL-operatorer och -funktioner, genererar relationen ovan en SQL-kopplingspredikat som:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
och
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
Kopplingspredikatet kan potentiellt ge mycket bättre frågeprestanda än en som omfattar komplexa SQL-operatorer och funktioner.
Funktionen COMBINEVALUES förlitar sig på att användarna väljer lämplig avgränsare för att säkerställa att unika kombinationer av indatavärden ger distinkta utdatasträngar, men det verifierar inte att antagandet är sant. Om användarna till exempel väljer
"| "
som avgränsare, men en rad i Table1 harTable1[Column1] = "| "
ochTable2 [Column2] = " "
, medan en rad i Table2 harTable2[Column1] = " "
ochTable2[Column2] = "| "
, blir de två sammanfogade utdata samma"|| "
, vilket verkar tyda på att de två raderna är en matchning i kopplingsåtgärden. De två raderna kopplas inte ihop om båda tabellerna kommer från samma DirectQuery-källa, även om de kopplas samman om båda tabellerna importeras.
Exempel
Följande DAX fråga:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Returnerar följande tabell med en kolumn:
[Månad] |
---|
Januari 2020 |
Februari 2020 |
Mars 2020 |
April 2020 |
Maj 2020 |
Juni 2020 |
Juli 2020 |
Augusti 2020 |
September 2020 |
Oktober 2020 |
November 2020 |
December 2020 |
Januari 2021 |
Januari 2021 |
Februari 2021 |
Mars 2021 |
April, 2021 |
Maj, 2021 |
Juni 2021 |
Juli 2021 |
Augusti, 2021 |
September 2021 |
Oktober 2021 |
November 2021 |
December 2021 |