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 l'attestation finale.

8 000 XOF / 12,20 € / 13,29 $

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

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.