Utiliser des fonctions de modification de filtre
Lorsque vous utilisez la fonction CALCULATE, vous pouvez transmettre des fonctions de modification de filtre, qui vous permettent d’accomplir davantage que l’ajout de filtres seuls.
Supprimer des filtres
Utilisez la fonction REMOVEFILTERS comme expression de filtre CALCULATE pour supprimer des filtres du contexte de filtre. Elle peut supprimer des filtres d’une ou plusieurs colonnes ou de toutes les colonnes d’une table unique.
Remarque
La fonction REMOVEFILTERS est relativement nouvelle. Dans les versions précédentes de DAX, vous supprimiez des filtres à l’aide de la fonction ALL ou de variantes, notamment les fonctions ALLEXCEPT et ALLNOBLANKROW. Ces fonctions se comportaient comme des modificateurs de filtre et comme des fonctions qui renvoyaient des objets de table de valeurs distinctes. Ces fonctions sont mentionnées maintenant, car il est possible que vous trouviez des documents et exemples de formules qui suppriment des filtres à l’aide de ces fonctions.
Dans l’exemple suivant, vous allez ajouter une nouvelle mesure à la table Sales qui évalue la mesure Revenue, mais en supprimant des filtres de la table Sales Territory. Mettez la mesure au format devise à deux décimales.
Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))
À présent, ajoutez la mesure Revenue Total Region au visuel Matrice qui se trouve sur la Page 2 de l’état. Le visuel Matrice affiche un regroupement selon trois colonnes à partir de la table Sales Territory sur les lignes : Group, Country et Region.
Notez que chaque valeur de la mesure Revenue Total Region est identique. Il s’agit de la valeur du chiffre d’affaires total.
Même si ce résultat n’est pas utile, lorsqu’il est utilisé comme dénominateur dans un ratio, il calcule un pourcentage du total général. Par conséquent, vous allez maintenant remplacer la définition de la mesure Revenue Total Region par la définition suivante. Cette nouvelle définition modifie le nom de la mesure et déclare deux variables. Veillez à mettre la mesure au format pourcentage à deux décimales.
Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory')
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalRegionRevenue
)
Vérifiez que le visuel Matrice affiche désormais les valeurs Revenue % Total Region.
Vous allez maintenant créer une autre mesure, mais cette fois-ci, vous allez calculer le ratio du chiffre d’affaires d’une région divisé par le chiffre d’affaires de son pays ou de sa région.
Avant d’effectuer cette tâche, notez que la valeur Revenue % Total Region de la région Southwest est 22,95 %. Examinez le contexte de filtre pour cette cellule. Basculez vers la vue de données, puis sélectionnez la table Sales Territory dans le volet Données.
Appliquer les filtres de colonne suivants :
-
Group: North America -
Country: United States -
Region: Southwest
Notez que les filtres réduisent la table à une seule ligne. À présent, tout en pensant à votre nouvel objectif de créer un ratio du chiffre d’affaires de la région sur celui de son pays, effacez le filtre de la colonne Region.
Notez que cinq lignes existent maintenant, chaque ligne appartenant au pays United States (États-Unis). Par conséquent, lorsque vous effacez les filtres de la colonne Region, tout en conservant les filtres sur les colonnes Country et Group, vous avez un nouveau contexte de filtre pour le pays de la région.
Dans la définition de mesure suivante, notez que vous pouvez effacer ou supprimer un filtre d’une colonne. Dans la logique DAX, il s’agit d’une petite modification subtile apportée à la formule de mesure Revenue % Total Region : la fonction REMOVEFILTERS supprime désormais les filtres de la colonne Region au lieu de toutes les colonnes de la table Sales Territory.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
Ajoutez la mesure Revenue % Total Country à la table Sales, puis mettez-la au format pourcentage à deux décimales. Ajoutez la nouvelle mesure au visuel Matrice.
Notez que toutes les valeurs, à l’exception de celles pour les régions United States (États-Unis), sont de 100 %. En effet, dans la société Adventure Works, les États-Unis disposent de régions, contrairement à l’ensemble des autres pays/régions.
Remarque
Les modèles tabulaires ne prennent pas en charge les hiérarchies irrégulières, qui sont des hiérarchies à profondeur variable. Par conséquent, il s’agit d’une approche de conception courante pour répéter les valeurs parentes (ou d’un autre type ancestral) à des niveaux inférieurs de la hiérarchie. Par exemple, l’Australie (Australia) n’a pas de région, donc la valeur country/region est répétée comme nom de région. Il est toujours préférable de stocker une valeur explicite au lieu de la laisser vide.
L’exemple suivant est la dernière mesure que vous allez créer. Ajoutez la mesure Revenue % Total Group, puis mettez-la au format pourcentage à deux décimales. Ensuite, ajoutez la nouvelle mesure au visuel Matrice.
Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS(
'Sales Territory'[Region],
'Sales Territory'[Country]
)
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalGroupRevenue
)
Lorsque vous supprimez des filtres des colonnes Region et Country dans la table Sales Territory, la mesure calcule le chiffre d’affaires de la région en tant que ratio du chiffre d’affaires de son groupe.
Conserver des filtres
Vous pouvez utiliser la fonction KEEPFILTERS comme expression de filtre dans la fonction CALCULATE pour conserver des filtres.
Pour observer comment accomplir cette tâche, consultez la Page 1 de l’état. Ensuite, modifiez la définition de la mesure Revenue Red pour utiliser la fonction KEEPFILTERS.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
Notez que le visuel Table ne comporte qu’une seule valeur de la mesure Revenue Red. En effet, l’expression de filtre booléenne conserve les filtres existants sur la colonne Color dans la table Product. La raison pour laquelle les couleurs autres que le rouge (Red) sont vides est que les contextes de filtre et les expressions de filtre sont combinés pour ces deux filtres. La couleur noire (Black) et la couleur rouge (Red) sont intersectées, et comme les deux ne peuvent pas avoir la valeur TRUE en même temps, l’expression n’est filtrée par aucune ligne de produit. Il est uniquement possible que les deux filtres rouges (Red) puissent avoir la valeur TRUE en même temps, ce qui explique pourquoi seule la valeur de la mesure Revenue Red s’affiche.
Utiliser des relations inactives
Une relation de modèle inactive peut propager des filtres seulement si la fonction USERELATIONSHIP est transmise en tant qu’expression de filtre à la fonction CALCULATE. Lorsque vous impliquez une relation inactive à l’aide de cette fonction, la relation active devient automatiquement inactive.
Examinez un exemple de définition de mesure qui calcule la mesure Revenue par date d’expédition à l’aide d’une relation inactive :
Revenue Shipped =
CALCULATE (
[Revenue],
USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)
Modifier le comportement d’une relation
Vous pouvez modifier le comportement d’une relation de modèle lorsqu’une expression est évaluée en transmettant la fonction CROSSFILTER en tant qu’expression de filtre à la fonction CALCULATE. Il s’agit d’une fonctionnalité avancée.
La fonction CROSSFILTER peut modifier les directions de filtre (des deux vers une seule ou d’une seule vers les deux) et même désactiver une relation.