COMBINEVALUES
Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo
Unisce due or più stringhe di testo in una stringa di testo. Lo scopo principale di questa funzione è supportare le relazioni a più colonne nei modelli DirectQuery. Per informazioni dettagliate, vedere osservazioni
Sintassi
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parametri
Termine | Definizione |
---|---|
delimiter |
Separatore da usare durante la concatenazione. Deve essere una costante value. |
expression |
Espressione DAX la cui value verrà unita a una singola stringa di testo. |
Restituisce value
Stringa concatenata.
Osservazioni
La funzione COMBINEVALUES presuppone, ma not convalidare, che quando il values di input è diverso, anche le stringhe di output sono diverse. In base a questo presupposto, quando COMBINEVALUES viene usato per creare colonne calcolate per creare una relazione che unisce più colonne da due tabelle DirectQuery, viene generata una condizione di join ottimizzata in fase di query time. Ad esempio, if gli utenti vogliono creare una relazione tra Table1(Column1, Column2) and Table2(Column1, Column2), possono creare due colonne calcolate, una in ogni tabella, come segue:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
and
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
And quindi creare una relazione tra
Table1[CalcColumn]
andTable2[CalcColumn]
. A differenza di altre funzioni DAXand operatori, che vengono convertiti letteralmente negli operatori SQL corrispondenti and funzioni, la relazione precedente genera un predicato di join SQL come:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
and
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
Il predicato di join può potenzialmente offrire prestazioni di query molto migliori rispetto a quelle che coinvolgono operatori SQL complessi and funzioni.
La funzione COMBINEVALUES si basa sugli utenti per scegliere il delimitatore appropriato per garantire che combinazioni univoche di input values produrre stringhe di output distinte, ma not verificare che il presupposto sia true. Ad esempio, if gli utenti scelgono
"| "
come delimitatore, ma una riga di Table1 haTable1[Column1] = "| "
andTable2 [Column2] = " "
, mentre una riga in Table2 haTable2[Column1] = " "
andTable2[Column2] = "| "
, i due output concatenati saranno gli stessi"|| "
, che sembrano indicare che le due righe sono una corrispondenza nell'operazione di join. Le due righe vengono unite not unite if entrambe le tabelle provengono dalla stessa origine DirectQuery anche se vengono unite insieme if vengono importate entrambe le tabelle.
Esempio
La query di DAX seguente:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Restituisce la tabella a colonna singola seguente:
[Month] |
---|
Gennaio 2020 |
Febbraio 2020 |
Marzo 2020 |
Aprile 2020 |
Maggio 2020 |
Giugno 2020 |
Luglio 2020 |
Agosto 2020 |
Settembre 2020 |
Ottobre 2020 |
Novembre 2020 |
Dicembre 2020 |
Gennaio 2021 |
Gennaio 2021 |
Febbraio 2021 |
Marzo 2021 |
Aprile 2021 |
Maggio 2021 |
Giugno 2021 |
Luglio 2021 |
Agosto 2021 |
Settembre 2021 |
Ottobre 2021 |
Novembre 2021 |
Dicembre 2021 |