Retourne une table qui représente un sous-ensemble d’une autre table ou expression.
FILTER(<table>, <filter>)
Exemple
Sales2007_FILTER =
CALCULATE (
Sales[SalesAmount],
FILTER (
OrderDate,
OrderDate[Year] = 2007
)
)
Fonction qui n’est pas indépendante (doit être incorporée à CALCULATE et CALCULATETABLE par exemple). Est une expression de table, qui est filtrée sur une expression appliquée sur chaque ligne. Commence par supprimer tous les filtres appliqués à <table>. Fonction de type “Itérateur”, donc évalue chaque ligne individuellement. Le filtre doit porter sur les colonnes du premier argument (les arguments Filtre de CALCULATE peuvent porter sur la totalité du modèle) Limites de la fonction
Ici on utilise FILTER comme expression de table pour l’argument <filters> de CALCULATE.
Red Sales =
CALCULATE(
[Sales],
FILTER('Product', 'Product'[Color] = "Red")
)
On préfèrera utiliser une expression booléenne (plutôt qu’une expression de table), qui est plus efficace (s’assure que tous les filtres existants appliqués à la colonne sont conservés et ne sont pas remplacés.)
Red Sales =
CALCULATE(
[Sales],
KEEPFILTERS('Product'[Color] = "Red")
)
Une expression booléenne a ces limites :
Ne permet pas de comparer des colonnes entre elles Ne peut pas référencer une mesure. Ne peut pas utiliser des fonctions CALCULATE imbriquées. Ne peut pas utiliser des fonctions qui analysent ou retournent une table. Donc on devra utiliser FILTER au lieu de KEEPFILTER ; on cherche les produits à marges élevées - prix dépasse 2 fois le coût standard :
High Margin Product Sales =
CALCULATE(
[Sales],
FILTER(
'Product',
'Product'[ListPrice] > 'Product'[StandardCost] * 2
)
)