COMBINEVALUESCOMBINEVALUES

Verbindet zwei oder mehr Textzeichenfolgen zu einer einzigen Textzeichenfolge.Joins two or more text strings into one text string. Hauptzweck dieser Funktion ist die Unterstützung mehrspaltiger Beziehungen in DirectQuery-Modellen.The primary purpose of this function is to support multi-column relationships in DirectQuery models. Weitere Informationen finden Sie im Abschnitt Hinweise.See Remarks for details.

SyntaxSyntax

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

ParameterParameters

BegriffTerm DefinitionDefinition
Trennzeichendelimiter Ein Trennzeichen zur Verwendung bei der Verkettung.A separator to use during concatenation. Es muss sich um einen konstanten Wert handeln.Must be a constant value.
expressionexpression Ein DAX-Ausdruck, dessen Wert in einer einzigen Textzeichenfolge zusammengeführt wird.A DAX expression whose value will be be joined into a single text string.

RückgabewertReturn value

Die verkettete Zeichenfolge.The concatenated string.

BemerkungenRemarks

  • Die COMBINEVALUES-Funktion geht davon aus – überprüft jedoch nicht –, dass bei unterschiedlichen Eingabewerten auch die Ausgabezeichenfolgen unterschiedlich sind.The COMBINEVALUES function assumes, but does not validate, that when the input values are different, the output strings are also different. Basierend auf dieser Annahme wird bei Verwendung von COMBINEVALUES zum Erstellen berechneter Spalten für die Einrichtung einer Beziehung, die mehrere Spalten aus zwei DirectQuery-Tabellen verbindet, zur Abfragezeit eine optimierte Verknüpfungsbedingung erzeugt.Based on this assumption, when COMBINEVALUES is used to create calculated columns in order to build a relationship that joins multiple columns from two DirectQuery tables, an optimized join condition is generated at query time. Wenn Benutzer beispielsweise eine Beziehung zwischen „Tabelle1(Spalte1, Spalte2)“ und „Tabelle2(Spalte1, Spalte2)“ erstellen möchten, können sie zwei berechnete Spalten erstellen, eine für jede Tabelle:For example, if users want to create a relationship between Table1(Column1, Column2) and Table2(Column1, Column2), they can create two calculated columns, one on each table, as:

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

    andand

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

    Anschließend kann eine Beziehung zwischen Table1[CalcColumn] und Table2[CalcColumn] erstellt werden.And then create a relationship between Table1[CalcColumn] and Table2[CalcColumn]. Im Gegensatz zu anderen DAX-Funktionen und -Operatoren, die wörtlich in die entsprechenden SQL-Operatoren und -Funktionen übersetzt werden, erzeugt die obige Beziehung ein SQL-Joinprädikat:Unlike other DAX functions and operators, which are translated literally to the corresponding SQL operators and functions, the above relationship generates a SQL join predicate as:

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

    andand

    [https://login.microsoftonline.com/consumers/]((Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)).(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL).

  • Das Joinprädikat kann potenziell eine deutlich bessere Abfrageleistung liefern als ein Prädikat, das komplexe SQL-Operatoren und -Funktionen umfasst.The join predicate can potentially deliver much better query performance than one that involves complex SQL operators and functions.

  • Die COMBINEVALUES-Funktion verlässt sich darauf, dass der Benutzer das geeignete Trennzeichen auswählt, um sicherzustellen, dass eindeutige Kombinationen aus Eingabewerten unterscheidbare Ausgabezeichenfolgen liefern. Die Funktion überprüft aber nicht, ob diese Annahme zutrifft.The COMBINEVALUES function relies on users to choose the appropriate delimiter to ensure that unique combinations of input values produce distinct output strings but it does not validate that the assumption is true. Wenn der Benutzer beispielsweise "| " als Trennzeichen auswählt, aber eine Zeile in Tabelle1 Table1[Column1] = "| " und Table2 [Column2] = " " aufweist, während eine Zeile in Tabelle2 Table2[Column1] = " " und Table2[Column2] = "| " enthält, sind die beiden verketteten Ausgaben identisch: "|| ". Dies scheint darauf hinzudeuten, dass die beiden Zeilen im Joinvorgang übereinstimmen.For example, if users choose "| " as the delimiter, but one row in Table1 has Table1[Column1] = "| " and Table2 [Column2] = " ", while one row in Table2 has Table2[Column1] = " " and Table2[Column2] = "| ", the two concatenated outputs will be the same "|| ", which seem to indicate that the two rows are a match in the join operation. Die beiden Zeilen werden nicht miteinander verknüpft, wenn beide Tabellen aus der gleichen DirectQuery-Quelle stammen, obwohl sie beim Import beider Tabellen miteinander verknüpft werden.The two rows are not joined together if both tables are from the same DirectQuery source although they are joined together if both tables are imported.

BeispielExample

Die folgende DAX-Abfrage:The following DAX query:

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

Gibt die folgende Tabelle mit einer einzigen Spalte zurück:Returns the following single column table:

[Month][Month]
January,2007January,2007
February,2007February,2007
March,2007March,2007
April,2007April,2007
May,2007May,2007
June,2007June,2007
July,2007July,2007
August,2007August,2007
September,2007September,2007
October,2007October,2007
November,2007November,2007
December,2007December,2007
January,2008January,2008
January,2008January,2008
February,2008February,2008
March,2008March,2008
April,2008April,2008
May,2008May,2008
June,2008June,2008
July,2008July,2008
August,2008August,2008
September,2008September,2008
October,2008October,2008
November,2008November,2008
December,2008December,2008