Condividi tramite


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 ha Table1[Column1] = "| "andTable2 [Column2] = " ", mentre una riga in Table2 ha Table2[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