TOP

DAX-Leçon 2. Fonction CALCULATE

Description

La première fonction à commencer à apprendre DAX est CALCULATE. Cette fonction n'a pas d'équivalent exact dans Excel, mais elle est comparable aux fonctions SUMIFS et COUNTIFS . En bref, cette fonction applique des filtres à d'autres fonctions de calcul, nous pouvons ainsi sélectionner et inclure dans les calculs uniquement les données dont nous avons besoin.

Syntaxe de la fonction CALCULATE()

=CALCULATE(< expression statistique >, < filtre1 >, < filtre2 >, ...)

< expression statistique >

Expression statistique devrait nous renvoyer le résultat du calcul (une valeur, pas un tableau). Pour cette raison, des fonctions statistiques du type sont souvent utilisées dans ce cadre SUM , MINIMUM , MAXIMUM , PAYS etc.

  1. SUM([ Nom de colonne ])
  2. SUM([ NomColonnes1 ]) / MAX([ NomColonnes2 ])
  3. Nom d'un autre champ de calcul (mesure)

< filtre1 >, < filtre2 >,...

Filtre définit la plage de données sur laquelle travailler. Les conditions de sélection des valeurs sont précisées ici.

  1. [ Nom de colonne ] = Auto
  2. [ Nom de colonne ] >= 6
  3. ALL( 'Nom de la table' ) ou ALL( 'Nom de la table' [ Nom de colonne ] )
  4. FILTER ( 'Nom de la table' , 'Nom de la table' [ Nom de colonne ] = " Vert ")

Supposons que nous ayons une telle table, appelée Demo et chargé dans PowerPivot .

Créons un tableau récapitulatif basé sur celui-ci et comptons le nombre d'enregistrements pour chaque produit.

Créons maintenant un nouveau champ de calcul (Measure) Count_All_Product dans notre tableau croisé dynamique, qui affichera le nombre total d'enregistrements pour toutes les lignes.

Comment avons-nous obtenu les chiffres dans le champ de calcul Count_All_Product 16 ? L'explication est que nous avons supprimé pour ce champ tous les filtres qui étaient appliqués dans le tableau croisé dynamique (chaque ligne du tableau croisé dynamique est un filtre distinct), à l'aide de la fonction ALL() . Autrement dit, une fonction ALL (Demo) donne la commande pour supprimer tous les filtres du champ calculé Count_All_Product appliqués à la table Demo .

Ajoutons un autre champ (City) en lignes pour voir les ventes de chaque produit par ville :

On voit que les chiffres sont dans le champ Count of Rows changement, mais pas dans le champ de calcul Count_All_Product. C'est exact, car pour le dernier, nous avons supprimé tous les filtres de la formule. Apportons maintenant quelques modifications mineures à notre formule et voyons le résultat.

=CALCULATE(COUNTROWS(Demo);ALL(Demo[Product]))

Nous avons changé l'argument en fonction ALL() en remplaçant Demo sur Demo[Product] . Désormais, les filtres ne seront pas supprimés pour l'ensemble du tableau Demo , mais uniquement pour sa colonne Demo[Product] .

Donc on voit ce qu'il y a sur le terrain Count of Rows les filtres sont en vigueur Product et City , et uniquement un filtre sur le champ calculé Count_All_Product City .