Différences entre les fonctions FILTER, FILTERS et ISFILTERED en DAX

Les fonctions FILTER FILTERS ISFILTERED
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Maîtrisez Power BI
Revoir le teaser Je m'abonne
Transcription

Cette leçon fait partie de la formation
59,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

DescriptionProgrammeAvis

Cette leçon fait partie de la formation
59,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

Les objectifs sont de :
1. Comprendre les différences fonctionnelles entre FILTER, FILTERS et ISFILTERED.
2. Savoir appliquer ces fonctions dans Power BI pour obtenir des analyses de données plus précises.
3. Explorer l'impact des filtres croisés avec ISCROSSFILTERED.

Découvrez les distinctions entre les fonctions FILTER, FILTERS et ISFILTERED en DAX, et comment les utiliser dans Power BI pour affiner vos analyses de données.

Dans cette leçon, nous explorons en détail les différences entre les fonctions FILTER, FILTERS et ISFILTERED en DAX, utilisées dans Power BI pour manipuler les données. Nous commençons par consulter le DAX GUIDE pour une définition précise de chaque fonction :


FILTER : Cette fonction renvoie une table filtrée selon une expression de filtre spécifiée. Par exemple, en filtrant la table CUSTOMER en fonction du champ CONTINENT.


FILTERS : Contrairement à FILTER, FILTERS retourne un ensemble de valeurs possibles appliqué directement à la colonne spécifiée. Elle enumère toutes les valeurs possibles d'un filtre appliqué.


ISFILTERED : Utilisé pour vérifier si une colonne a déjà un filtre appliqué. Il retourne TRUE si oui, sinon FALSE.


Enfin, nous introduisons ISCROSSFILTERED, qui identifie si un filtre appliqué à une colonne affecte indirectement d'autres colonnes de la même table.

Voir plus
Questions réponses
Quelle est la principale fonction de FILTER en DAX ?
La fonction FILTER en DAX renvoie une table filtrée conformément à une expression de filtre.
Quand devons-nous utiliser ISFILTERED ?
La fonction ISFILTERED doit être utilisée pour vérifier si une colonne subit déjà un filtre.
Que fait ISCROSSFILTERED dans une analyse DAX ?
ISCROSSFILTERED identifie si un filtre appliqué à une colonne affecte indirectement d'autres colonnes de la même table.
nous allons voir la différence entre les fonctions FILTERS à la fin SEISFILTERED c'est pour cela que tout d'abord nous allons vers le DAX GUIDE qui est la référence des fonctions DAX il suffirait de taper DAX GUIDE DAX GUIDE au niveau de la barre de recherche, au niveau de Google et au niveau de la barre de recherche, au niveau de DAX GUIDE, nous tapons FILTER nous cliquons sur FILTER et voici une définition de FILTER c'est une fonction qui retourne une table filtrée on voit donc une table qui a été filtrée et puis l'avantage d'utilisation de DAX GUIDE c'est qu'il offre un environnement de simulation là nous pouvons essayer en live la fonction question par exemple ici, cette fonction filtre la table CUSTOMER qui contient un champ qui s'appelle CONTINENT d'ailleurs nous pouvons développer notre jeu de données CUSTOMER et nous cherchons CONTINENT au niveau de géographie oui absolument, il est là donc il est possible de filtrer sur la base de ce champ là, nous remarquons déjà au niveau de CONTINENT que tous ces continents ont la valeur EUROPE si par contre nous changeons le critère ou la condition de filtre nous cliquons sur RUN et nous aurons un résultat différent donc les continents ne contiennent pas maintenant EUROPE, mais plutôt NORTH AMERICA nous allons essayer de voir si nous avons d'autres valeurs autre que NORTH AMERICA nous allons voir peut-être nous allons voir avec un autre champ CITY, par exemple CITY CONCORD nous tapons CITY à ce niveau là, et la valeur plutôt c'est CONCORD il faut taper égal et voilà, le résultat de la fonction DAX elle nous retourne tout simplement CONCORD il est possible également d'utiliser la fonction FILTER autrement, c'est pour cela que nous retournons vers Power BI et je vais créer un jeu de données qui filtre en fait FACTSALES mais avant essayons de voir les données au niveau de FACTSALES nous allons appliquer un filtre sur la quantité retournée pour que ce soit entre par exemple 20 et 23 je vous montre une autre manière d'appliquer le filtre nous allons créer pour cela une table calculée nous allons vers la visualisation et par la suite nous allons créer une table au niveau de modélisation plutôt FACTSALES FACTSALES FILTERED que nous allons filtrer je vais utiliser CALCULATE TABLE avec FACTSALES comme sujet de filtre notre table qui sera filtrée sur la base du champ RETURN QUANTITY FACTSALES, c'est la table sujet de notre filtre et l'expression de filtre c'est le deuxième paramètre qu'accepte cette méthode de filtre ce sera donc FACTSALES plutôt RETURN QUANTITY RETURN QUANTITY qui doit être strictement supérieur à 20 avec une combinaison d'une deuxième condition FACTSALES RETURN QUANTITY ou encore RETURN QUANTITY qui est strictement inférieur à 23 disons cela va accepter les deux valeurs 21 et 22 je ferme les parenthèses c'est FILTER FILTER SYNTAXIQUE en principe non nous allons visiter cette table pour voir les jeux de données qui ont été créés toutes les données correspondent à une quantité retournée qui soit 21 ou 22 je vais mettre les deux fonctions l'une à côté de l'autre au niveau de la première fonction qui est définie au niveau du simulateur pour créer la table calculée sinon à ce niveau là dans le cas de Power BI nous avons appliqué le filtre à l'intérieur de la fonction CalculateTable passons maintenant à la fonction FILTERS FILTERS à la fin S FILTERS à la fin S retourne l'ensemble des valeurs possibles que nous pouvons appliquer à travers un filtre on voit un tableau des valeurs de filtres appliquées directement à la colonne spécifiée là nous pouvons également voir des exemples au niveau du simulateur, sinon nous pouvons revenir au niveau de Power BI, je vous montre un exemple concret par exemple ici prenons DimProduct cette table là, nous allons la visualiser visualiser les données de DimProduct tout d'abord DimProduct contient une colonne, par exemple Manufacturer cette colonne là, supposons que nous voulons retourner toutes les valeurs possibles au cas où nous voulons appliquer un filtre sur la colonne Manufacturer, pour énumérer ces valeurs là pour les appliquer ensuite au niveau d'un filtre, nous devons les lister ou les définir en tant qu'ensemble, une table tout simplement pour cela, nous allons utiliser la méthode ou plutôt la fonction Filters pour cela, je vais créer une nouvelle table calculée donc c'est une nouvelle table je vais l'appeler ManufacturerNames ManufacturerNames ManufacturerNames ManufacturerNames qui est CalculateTable Filters nous allons donc définir les filtres sur le nom des manufacturers au niveau de DimProduct et de cette manière là, ça va nous retourner tous les manufacturiers voilà, c'est AWC Logo c'est Cher et c'est ClassVest Généralement, Filters est appliqué en amont par rapport à d'autres fonctions donc ça retourne ces valeurs là qui vont être appliquées à une autre fonction, peut-être pour filtrer ou pour énumérer des valeurs possibles donc ça c'est la fonction Filters sinon, la fonction IsFiltered elle est utilisée pour indiquer si une colonne subit déjà un filtre ou pas parce que parfois, nous avons des tables qui sont calculées ou encore des tables dont les colonnes subissent des filtres alors pour savoir si les valeurs ou le jeu de données qui est présent est filtré ou pas nous utilisons la fonction IsFiltered pour cela nous allons créer une table encore une fois, une nouvelle table juste pour le test, nous allons l'appeler IsFilteredTable ça sera une table calculée à la volée rien que pour le test donc CalculatedTable et à ce niveau là il faut faire attention, il ne faut pas presser Entrée si nous voulons passer à une nouvelle ligne c'est avec Shift Entrée sinon, nous allons créer une table ou un jeu de données je vais créer une colonne qui s'appelle IsFiltered et IsFiltered il va nous retourner soit True, soit False c'est à dire soit la colonne est filtrée, soit elle n'est pas filtrée nous allons peut-être appliquer cette fonction sur Fact Sales par exemple Fact Sales Channel Key sur la colonne Channel Key nous allons déterminer si la colonne subit un filtre ou pas tout simplement, nous cliquons sur la validation et nous aurons le résultat suivant IsFiltered == False parce que pour le moment elle ne subit pas un filtre mais par contre, si nous appliquons un filtre à ce jeu de données disons que ça c'est Fact Sales Channel Key == 2 en ce moment là, nous avons filtré Channel Key et le résultat retourné sera True cette fois-ci parce qu'il y a déjà un filtre qui est appliqué dans ce cas là, à ce jeu de données par contre là si nous essayons de choisir une autre colonne outre que Channel Key pour voir si ça va nous renseigner si cette colonne là, par exemple Return Amount est-ce que c'est filtré ou pas Return Return Amount si nous essayons d'exécuter ce jeu de données nous aurons False, malgré que c'est filtré une fois que nous filtrons une table ou une colonne bien particulière le filtre va affecter toutes les colonnes de la table mais IsFiltered n'est pas utilisé dans ce contexte IsFiltered est utilisé seulement pour tester si une colonne bien déterminée est filtrée ou pas si nous voulons connaître si le filtre affecte de manière indirecte le reste des colonnes de la même table nous n'utilisons pas IsFiltered mais IsCrossFiltered IsCrossFiltered en ce moment là, ça va nous retourner True nous essayons de valider et voilà True la valeur est True pourquoi maintenant c'est True ? Parce que Return Amount figure dans la table Fact Sales et par conséquent si nous appliquons un filtre au niveau d'une colonne quelconque au niveau de la même table la colonne concernée, par exemple dans ce cas-là Return Amount, va subir ce filtre également

Programme détaillé