COMBINEVALUES
s’applique à :colonne calculéetable calculéeMeasurecalcul visuel
Joint deux chaînes de texte or plus en une seule 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 constante value. |
expression |
Expression DAX dont les value seront jointes à une seule chaîne de texte. |
Retourner value
Chaîne concaténée.
Remarques
La fonction COMBINEVALUES suppose, mais n'not valider, que lorsque la values d’entrée est différente, 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 à la requête time. Par exemple, if utilisateurs souhaitent créer une relation entre Table1(Column1, Column2) and Table2(Column1, Column2), ils peuvent créer deux colonnes calculées, une sur chaque table, comme suit :
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
and
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
And ensuite créer une relation entre
Table1[CalcColumn]
andTable2[CalcColumn]
. Contrairement aux autres fonctions DAXand, qui sont traduites littéralement en opérateurs SQL correspondants and fonctions, 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)
and
(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 qu’un opérateur SQL complexe and fonctions.
La fonction COMBINEVALUES s’appuie sur les utilisateurs pour choisir le délimiteur approprié pour s’assurer que les combinaisons uniques d’entrée values produisent des chaînes de sortie distinctes, mais il not valider que l’hypothèse est true. Par exemple, if utilisateurs choisissent
"| "
comme délimiteur, mais une ligne de Table1 aTable1[Column1] = "| "
andTable2 [Column2] = " "
, tandis qu’une ligne de Table2 aTable2[Column1] = " "
andTable2[Column2] = "| "
, les deux sorties concaténées sont les mêmes"|| "
, qui semblent indiquer que les deux lignes sont une correspondance dans l’opération de jointure. Les deux lignes sont not jointes if les deux tables proviennent de la même source DirectQuery, même si elles sont jointes if 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 :
[Month] |
---|
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 |