Partager via


COMBINEVALUES

S’applique à : Colonne calculée Table calculée Mesure Calcul de visuel

joint deux chaînes de texte ou plus en une seule. L’objectif premier de cette fonction est de prendre en charge les relations multicolonnes 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 Une expression DAX dont la valeur sera jointe pour constituer une seule chaîne de texte.

Valeur retournée

Une chaîne concaténée.

Remarques

  • La fonction COMBINEVALUES suppose, mais sans confirmer, que lorsque les valeurs d’entrée sont différentes, les chaînes de sortie sont également différentes. Selon cette hypothèse, quand la fonction COMBINEVALUES est utilisée pour créer des colonnes calculées afin de produire une relation qui joint plusieurs colonnes 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 veulent 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])
    

    Ils peuvent ensuite créer une relation entre Table1[CalcColumn] et Table2[CalcColumn]. Contrairement aux 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 éventuellement fournir des performances de requêtes bien supérieures à celles qui impliquent des fonctions et des opérateurs SQL complexes.

  • La fonction COMBINEVALUES s’appuie sur les utilisateurs pour choisir le délimiteur approprié afin de garantir que les combinaisons uniques de valeurs d’entrée produisent des chaînes de sortie distinctes, mais elle ne confirme pas que l’hypothèse est exacte. Par exemple, si les utilisateurs choisissent "| " comme délimiteur, mais qu’une ligne dans Table1 contient Table1[Column1] = "| " et Table2 [Column2] = " ", alors qu’une ligne de Table2 contient Table2[Column1] = " " et Table2[Column2] = "| ", les deux sorties concaténées sont les mêmes "|| ", ce qui semble indiquer que les deux lignes constituent 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, bien qu’elles soient regroupées si les deux tables sont importées.

Exemple

La requête DAX suivante :

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

Retourne la table à une seule colonne 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