Lezen in het Engels

Delen via


COMBINEVALUES

Van toepassing op:berekende kolomberekende tabelMetingVisuele berekening

Hiermee worden twee of meer tekenreeksen samengevoegd tot één tekenreeks. Het primaire doel van deze functie is het ondersteunen van relaties met meerdere kolommen in DirectQuery-modellen. Zie opmerkingen voor meer informatie.

Syntaxis

DAX
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)

Parameters

Term Definitie
delimiter Een scheidingsteken dat moet worden gebruikt tijdens samenvoeging. Moet een constante waarde zijn.
expression Een DAX-expressie waarvan de waarde wordt samengevoegd tot één tekenreeks.

Retourwaarde

Een samengevoegde tekenreeks.

Opmerkingen

  • De functie COMBINEVALUES gaat ervan uit dat wanneer de invoerwaarden verschillen, de uitvoertekenreeksen ook verschillend zijn, maar niet valideert. Op basis van deze veronderstelling wordt wanneer COMBINEVALUES wordt gebruikt om berekende kolommen te maken om een relatie te maken waarmee meerdere kolommen uit twee DirectQuery-tabellen worden samengevoegd, een geoptimaliseerde joinvoorwaarde wordt gegenereerd tijdens het uitvoeren van query's. Als gebruikers bijvoorbeeld een relatie willen maken tussen Table1(Column1, Column2) en Table2(Column1, Column2), kunnen ze twee berekende kolommen maken, één voor elke tabel, zoals:

    DAX
    Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
    

    en

    DAX
    Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
    

    Maak vervolgens een relatie tussen Table1[CalcColumn] en Table2[CalcColumn]. In tegenstelling tot andere DAX-functies en -operators, die letterlijk worden vertaald naar de bijbehorende SQL-operators en -functies, genereert de bovenstaande relatie een SQL-joinpredicaat als:

    DAX
    (Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
    

    en

    DAX
    (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
    
  • Het joinpredicaat kan mogelijk veel betere queryprestaties leveren dan een query die complexe SQL-operators en -functies omvat.

  • De functie COMBINEVALUES is afhankelijk van gebruikers om het juiste scheidingsteken te kiezen om ervoor te zorgen dat unieke combinaties van invoerwaarden afzonderlijke uitvoertekenreeksen produceren, maar niet valideert dat de aanname waar is. Als gebruikers bijvoorbeeld "| " als scheidingsteken kiezen, maar één rij in Tabel1 Table1[Column1] = "| " en Table2 [Column2] = " "heeft, terwijl één rij in Tabel2 Table2[Column1] = " " en Table2[Column2] = "| "heeft, zijn de twee samengevoegde uitvoer hetzelfde "|| ", wat erop lijkt aan te geven dat de twee rijen een overeenkomst zijn in de joinbewerking. De twee rijen worden niet samengevoegd als beide tabellen afkomstig zijn van dezelfde DirectQuery-bron, hoewel ze worden samengevoegd als beide tabellen worden geïmporteerd.

Voorbeeld

De volgende DAX-query:

DAX
EVALUATE
DISTINCT (
    SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)

Retourneert de volgende tabel met één kolom:

[Maand]
Januari 2020
Februari 2020
Maart 2020
April 2020
Mei 2020
Juni 2020
Juli 2020
Augustus 2020
September 2020
Oktober 2020
November 2020
December 2020
Januari 2021
Januari 2021
Februari 2021
Maart 2021
April 2021
Mei 2021
Juni 2021
Juli 2021
Augustus 2021
September 2021
Oktober 2021
November 2021
December 2021