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.