DAX pour Power BI & Excel

Conserver un filtre même absent du visuel

Nous allons utiliser VALUES ou SUMMARIZE après un REMOVEFILTERS, ALL ou ALLEXCEPT.

Contexte : Nous voulons calculer le % que représente les ventes d’un produit dans sa catégorie. Ici les “Montain Bikes” représentent 38,52 % des ventes de sa catégorie :

image.png

Si nous supprimons le champ Category du visuel, nous obtenons 33,19 %, ce qui représente le % sur le total des ventes, et non sur la catégorie. Notre colonne PercentCategory ne renvoie donc pas le bon résultat :

image.png

Nous avons utilisé ALLEXCEPT, qui supprime le filtre appliqué à la colonne Category. On aurait pu utiliser REMOFILTERS ou ALL, le résultat aurait été le même (pas bon donc) :

DEFINE 
MEASURE Sales[PercentCategory] = 
    VAR TotalCategory = CALCULATE(
        Sales[Total Sales],
        ALLEXCEPT('Product', 'Product'[Category]),
    )
RETURN
    DIVIDE( Sales[Total Sales], TotalCategory)

Il nous faut ajouter un filtre avec VALUES :

DEFINE 
MEASURE Sales[PercentCategory] = 
    VAR TotalCategory = CALCULATE(
        Sales[Total Sales],
        ALLEXCEPT('Product', 'Product'[Category]),
        VALUES('Product'[Category])
    )
RETURN
    DIVIDE( Sales[Total Sales], TotalCategory)

CALCULATE supporte plusieurs filtres, chaque filtre étant appliqué SUCCESSIVEMENT : on enlève tous les filtres sur la colonne Category puis on filtre sur la liste des Category.

La colonne contient désormais le % des ventes par catégorie, quelques soit le filtre appliqué dans le visuel.

image.png