PaliSkill
Power BI

Leçon 7 / 10 — Chapitre 7: DAX : CALCULATE et le contexte de filtre

Agrégations conditionnelles

Compter ou sommer « seulement quand une condition est vraie » se fait de deux façons équivalentes en résultat :

Avec CALCULATE (filtre le contexte) : [Jours d'absence] = CALCULATE( COUNTROWS(Pointages), Pointages[Statut] = "Absent" )

Avec un itérateur et IF (teste ligne par ligne) : SUMX( Pointages, IF( Pointages[Statut] = "Absent", 1, 0 ) )

Les deux donnent le même nombre. CALCULATE est généralement plus lisible et plus rapide quand la condition est un simple test d'égalité sur une colonne.

Prévoir un résultat. Table Pointages (contexte : un service, un mois) :

Statut
Présent
Absent
Présent
Congé
Absent
  • [Jours pointés] = COUNTROWS(Pointages) = 5
  • [Jours d'absence] = CALCULATE( COUNTROWS(Pointages), Pointages[Statut]="Absent" ) = 2
  • [Taux d'absence] = DIVIDE(2, 5) = 0,4 → 40 %

Piège : SUM( IF(...) ) sans X ne fonctionne pas comme espéré — SUM attend une colonne, pas une expression ligne à ligne. Il faut SUMX.

À retenir

  • Agrégation conditionnelle : CALCULATE( agrégat, condition ) ou SUMX( table, IF(condition, x, 0) ).
  • Même résultat ; CALCULATE est plus lisible pour un test d'égalité simple.
  • SUM(IF(...)) ne marche pas : il faut l'itérateur SUMX.

À vous de jouer : sur la table Pointages ci-dessus (Présent, Absent, Présent, Congé, Absent), que renvoie CALCULATE( COUNTROWS(Pointages), Pointages[Statut] = "Absent" ) ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 90 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès