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]
etTable2[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 aTable1[Column1] = "| "
etTable2 [Column2] = " "
, tandis qu’une ligne de Table2 aTable2[Column1] = " "
etTable2[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 |