Il y’a une différence fondamental entre les deux fonctions de Power Bi "CALCULATE" et "CALCULATETABLE" et la différence majeur est que la première retourne une valeur et l’autre retourne une table.

On va montrer la différence entre les valeurs retournées par des fonctions de Power Bi. Premièrement on va les introduire une par une.

CALCULATE : Évalue une expression dans un contexte de filtre modifié.

Syntaxe :

CALCULATETABLE : Évalue une expression de table dans un contexte de filtre modifié.

Syntaxe :

Passons maintenant à la partie pratique. On va commencer par la fonction DAX de Power Bi "CALCULATE".
On va filtrer sur le nom de produit "Chocolade" et voir ce que ça donne :

On a eu la même valeur qu’on a dans notre table :

La fonction de Power Bi "CALCULATE" retourne une valeur, Si on met cette mesure dans une table elle retourne la même valeur pour tous noms de produits :

Mais elle retourne la même valeur pour tous les noms de produits. C’est un résultat normal vue qu’on a obligé la fonction de Power Bi de prendre en considération que les valeurs du produit "Chocolade". Alors c’est quoi la différence entre cette fonction et la fonction DAX de Power Bi "CALCULATETABLE" ?

Essayons de faire la même chose mais avec la fonction de Power Bi "CALCULATETABLE". Cette fonction reçoit une table en premier paramètre :

Elle retourne le message d’erreur suivant :

On a deux cas dans ce message :

  • - Une mesure retourne seulement une seule valeur et si on la mit dans une table et elle retourne différentes valeurs pour chaque ligne ça c’est autre chose mais dans tous les cas on reste dans le principe d’une seul valeur pour chaque ligne. Principalement une mesure retourne une valeur si on n’a aucun filtre.
  • - Dans l’erreur on peut facilement voir que le problème est que cette fonction retourne plusieurs valeurs qu’on ne peut pas mettre dans une mesure. Pour cette fonction, elle créer une table et pas valeur scalaire.

Essayons de copier le même code mais cette fois dans une table :

Voici la table créé, on peut maintenant clairement voir qu’elle contient plusieurs valeurs :

Et on ne peut pas affecter cette table à une mesure. Evidement elle ne marche pas.

Mais est ce qu’il y’a pas une manière de faire ça dans une mesure ?

Ce qu’on doit faire est la somme des ventes pour le produit "Chocolade" :

On peut utiliser la fonction SUM mais elle prend qu’une seul colonne comme paramètre, on peut utiliser la fonction DAX de Power Bi "SUMX" :

Cette formule va créer une mesure avec la fonction de Power Bi "CALCULATETABLE" et qui donne le même résultat :