
Power Bi- DAX : Comment choisir entre SELECTEDVALUE, ALLSELECTED & IN
On va parler cette fois des fonctions Dax de power Bi : SELECTEDVALUE, ALLSELECTED et IN. On commence par une petite introduction de chaque fonction :
SELECTEDVALUE : Renvoie la valeur lorsqu’il n’y a qu’une seule valeur dans la colonne spécifiée, sinon retourne le résultat alternatif.
Syntaxe :
C’est l’équivalent de: IF (HASONEVALUE(<columnName>), VALUES(<columnName>), <alternateResult>)
ALLSELECTED : Renvoie toutes les lignes d’une table, ou toutes les valeurs d’une colonne, en ignorant les filtres qui auraient pu être appliqués à l’intérieur de la requête, mais en gardant les filtres qui viennent de l’extérieur.
Syntaxe :
IN : L’opérateur IN retourne TRUE si une ligne de valeurs existe ou contenue dans un tableau, sinon renvoie FAUX.
À l’exception de la syntaxe, l’opérateur IN et la fonction CONTAINSROW sont fonctionnellement équivalents, comme dans l’exemple suivant.
Passons maintenant à des exemples en utilisant Power Bi:
Notre modèle Power Bi contient deux tables "category" et "Orders", on a pas une relation entre eux :
On commence par la création de mesure SELECTEDVALUE pour extraire la valeur sélectionnée :
Après l’explication de SELECTEDVALUE? on passe maintenant à l’utilisation de cette fonction sur notre table "Orders".Ce qu’on veut est le suivant: si on filtre dans le slicer on obtient le résultat correspond dans notre table "Orders" .
On créer une mesure comme ce qu’on a fait avant :
Si une catégorie est sélectionnée on va l’utiliser comme catégorie dans notre table "Orders" :
On peut conclure qu’on a eu le résultat attendu en utilisant cette fonction.
Mais si on veut plusieurs catégories et on veut les sélectionner à la fois dans notre Dashboard Power Bi?
Alors comment on peut obtenir plusieurs sélections ?
On doit effectuer des modifications dans nos mesures et utiliser ALLSELECTED à la place de SELECTEDVALUE qui supporte cette multiplicité:
On obtient le résultat suivant :
La fameuse erreur de Power BI : "A table of multiple values was supplied where a single value was expected".On a donné à notre variable une table lorsqu’on a sélectionné deux catégories à la fois au lieu d’une seul valeur en gardant toujours notre sélection ?
Pour résoudre ce problème on utilise la fonction"In" de Power Bi qui va itérer nos valeurs sélectionner :
On rajoute un filtre catégorie de la table "Orders" pour comparer les deux tables :
On a pu expliquer avec des exemples ces fonctions ainsi les contraintes qu'on peut trouver dans la réalisation.