Bonnes pratiques de filtre avec CALCULATE
Cf. Using ALLEXCEPT vs ALL VALUES (video) et Using ALLEXCEPT versus ALL and VALUES - SQLBI (article)
Au lieu de (ALLEXCEPT):
Ventes par pays =
CALCULATE(
Sales[SalesAmount],
ALLEXCEPT( Customer, Customer[Continent] )
)Donne le bon résultat, mais suppose que le champ Continent soit présent dans la vignette.
ALLEXCEPT commence par supprimer TOUS les filtres sur Customer.
Supprime tous les filtres de la table Customer puis applique un filtre :
Ventes par continent =
CALCULATE(
Sales[SalesAmount],
REMOVEFILTERS ( Customer ),
VALUES ( Customer[Continent] )
)SalesAmount sera toujours calculé par rapport à Continent, même si le champ est absent de la vignette.
Avec plusieurs colonnes :
Supprime tous les filtres de la table Customer puis applique un filtre de plusieurs colonnes :
Ventes par continent =
CALCULATE(
Sales[SalesAmount],
REMOVEFILTERS ( Customer ),
SUMMARIZE ( Costumer, Costumer[Continent], Costumer[...] )
)Ou CROSSJOIN (VALUES(), VALUES()) si colonnes de différentes tables.