Une mesure est toujours évaluée dans un contexte de filtre qui combine deux origines : les filtres posés par le rapport (implicites) et les filtres écrits dans la formule (explicites).
Quand les deux portent sur la même colonne, c'est la formule qui gagne : explicites > implicites.
ALLSELECTED et ALLEXCEPT servent à choisir finement quels filtres du rapport on garde et lesquels on supprime.
Même colonne (Région dans la vignette, Région dans la formule) : le filtre explicite remplace le filtre implicite. La ligne Est affiche 300, les ventes de l'Ouest.
Colonnes différentes (Client dans la vignette, Région dans la formule) : les deux filtres s'additionnent (intersection). Chloé et David sont dans l'Est, donc vides.
KEEPFILTERS : le filtre explicite s'ajoute au filtre existant au lieu de le remplacer. La ligne Est devient vide.
Même effet avec un segment : si l'utilisateur choisit Région = Est, une carte [Ventes Ouest] affiche toujours 300.
Exemple : segment Client sur Alice, Bruno et Chloé (David exclu)
% du total général = DIVIDE ( [Total Ventes], CALCULATE ( [Total Ventes], ALL ( Ventes ) ) )
% du total visible = DIVIDE ( [Total Ventes], CALCULATE ( [Total Ventes], ALLSELECTED ( Ventes ) ) )
Client
Total Ventes
% du total général (ALL)
% du total visible (ALLSELECTED)
Alice
100
10,0 %
16,7 %
Bruno
200
20,0 %
33,3 %
Chloé
300
30,0 %
50,0 %
Total
600
60,0 %
100,0 %
ALL ignore aussi le segment : le dénominateur vaut 1 000.
ALLSELECTED respecte le segment : le dénominateur vaut 600, le total affiché.
Prudence : éviter ALLSELECTED à l'intérieur d'un itérateur (SUMX, FILTER...), son résultat y devient difficile à prévoir. Calculer d'abord le total dans une variable.