Share via


COMBINEVALUES

Gäller för:Beräknad kolumnBeräknad tabellMåttVisuell 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

Period Definition
Avgränsare En avgränsare som ska användas vid sammanfogning. Måste vara ett konstant värde.
Uttryck Ett DAX-uttryck vars värde kommer att kopplas till en enda textsträng.

Returvärde

En sammanfogad sträng.

Kommentarer

  • Funktionen COMBINEVALUES förutsätter, men validerar inte, att när indatavärdena skiljer sig åt är utdatasträngarna också olika. 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 kopplar samman 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])
    

    Och skapa sedan en relation mellan Table1[CalcColumn] och Table2[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 har Table1[Column1] = "| " och Table2 [Column2] = " ", medan en rad i Table2 har Table2[Column1] = " " och Table2[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