Partager via


COMBINEVALUES

s’applique à :colonne calculéetable calculéemesurecalcul visuel

Joint deux chaînes de texte ou plus à une chaîne de texte. L’objectif principal de cette fonction est de prendre en charge les relations à plusieurs colonnes dans les modèles DirectQuery. Pour plus d’informations, consultez remarques.

Syntaxe

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

Paramètres

Terme Définition
delimiter Séparateur à utiliser pendant la concaténation. Doit être une valeur constante.
expression Expression DAX dont la valeur sera jointe à une seule chaîne de texte.

Valeur de retour

Chaîne concaténée.

Remarques

  • La fonction COMBINEVALUES suppose, mais ne valide pas, que lorsque les valeurs d’entrée sont différentes, les chaînes de sortie sont également différentes. En fonction de cette hypothèse, lorsque COMBINEVALUES est utilisé pour créer des colonnes calculées afin de créer une relation qui joint plusieurs colonnes à partir de deux tables DirectQuery, une condition de jointure optimisée est générée au moment de la requête. Par exemple, si les utilisateurs souhaitent créer une relation entre Table1(Column1, Column2) et Table2(Column1, Column2), ils peuvent créer deux colonnes calculées, une sur chaque table, comme suit :

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

    et

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

    Puis créez une relation entre Table1[CalcColumn] et Table2[CalcColumn]. Contrairement à d’autres fonctions et opérateurs DAX, qui sont traduits littéralement en opérateurs et fonctions SQL correspondants, la relation ci-dessus génère un prédicat de jointure SQL comme suit :

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

    et

    (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
    
  • Le prédicat de jointure peut potentiellement offrir de meilleures performances de requête que celle qui implique des opérateurs et des fonctions SQL complexes.

  • La fonction COMBINEVALUES s’appuie sur les utilisateurs pour choisir le délimiteur approprié pour s’assurer que les combinaisons uniques de valeurs d’entrée produisent des chaînes de sortie distinctes, mais qu’elle ne valide pas que l’hypothèse est vraie. Par exemple, si les utilisateurs choisissent "| " comme délimiteur, mais qu’une ligne du tableau 1 a Table1[Column1] = "| " et Table2 [Column2] = " ", tandis qu’une ligne de Table2 a Table2[Column1] = " " et Table2[Column2] = "| ", les deux sorties concaténées sont les mêmes "|| ", ce qui semble indiquer que les deux lignes sont une correspondance dans l’opération de jointure. Les deux lignes ne sont pas jointes si les deux tables proviennent de la même source DirectQuery, même si elles sont jointes si les deux tables sont importées.

Exemple

Requête DAX suivante :

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

Retourne la table de colonnes unique suivante :

[Mois]
Janvier 2020
Février 2020
Mars 2020
Avril 2020
Mai 2020
Juin 2020
Juillet 2020
Août 2020
Septembre 2020
Octobre 2020
Novembre 2020
Décembre 2020
Janvier 2021
Janvier 2021
Février 2021
Mars 2021
Avril 2021
Mai 2021
Juin 2021
Juillet 2021
Août 2021
Septembre 2021
Octobre 2021
Novembre 2021
Décembre 2021