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]
etTable2[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 contientTable1[Column1] = "| "
etTable2 [Column2] = " "
, alors qu’une ligne de Table2 contientTable2[Column1] = " "
etTable2[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 |