COMBINEVALUES

Si applica a:Calcolo visivo misuratabella calcolata colonnacalcolata

unisce due o più stringhe di testo in una sola. Lo scopo principale di questa funzione è supportare le relazioni a più colonne nei modelli DirectQuery. Pe altri dettagli, vedere la sezione Osservazioni.

Sintassi

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

Parametri

Termine Definizione
delimiter Separatore da usare durante la concatenazione. Deve essere un valore costante.
expression Espressione DAX il cui valore verrà combinato in una singola stringa di testo.

Valore restituito

Stringa concatenata.

Osservazioni:

  • La funzione COMBINEVALUES presuppone, ma non convalida, il fatto che quando i valori di input sono diversi, anche le stringhe di output sono diverse. In base a questo presupposto, quando si usa COMBINEVALUES viene per creare colonne calcolate, allo scopo di creare una relazione che unisca più colonne di due tabelle DirectQuery, durante l'esecuzione della query viene generata una condizione di join ottimizzata. Ad esempio, se gli utenti vogliono creare una relazione tra Table1(Column1, Column2) e Table2(Column1, Column2), possono creare due colonne calcolate, una per ogni tabella, come segue:

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

    e

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

    e quindi creare una relazione tra Table1[CalcColumn] e Table2[CalcColumn]. A differenza di altre funzioni e operatori DAX, che vengono convertiti letteralmente nelle funzioni e negli operatori SQL corrispondenti, la relazione precedente genera un predicato di join SQL come:

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

    e

    (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
    
  • Potenzialmente, il predicato di join può offrire prestazioni di query molto migliori rispetto a quelle che coinvolgono funzioni e operatori SQL complessi.

  • La funzione COMBINEVALUES si basa sul presupposto che l'utente scelga il delimitatore appropriato per garantire che combinazioni univoche di valori di input producano stringhe di output distinte, ma non convalida che il presupposto sia veritiero. Ad esempio, se l'utente sceglie "| " come delimitatore, ma una riga in Tabella1 ha Table1[Column1] = "| " e Table2 [Column2] = " ", mentre una riga in Tabella2 ha Table2[Column1] = " " e Table2[Column2] = "| ", i due output concatenati saranno entrambi "|| ", il che sembra indicare che le due righe rappresentano una corrispondenza nell'operazione di join. Le due righe non vengono unite in join se entrambe le tabelle appartengono alla stessa origine DirectQuery, sebbene vengano unite in join se entrambe le tabelle vengono importate.

Esempio

La query DAX seguente:

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

Restituisce la tabella seguente con una singola colonna:

[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