Identifiez votre contexte de filtre
Félicitations ! Vos premiers indicateurs ont fait sensation au sein de l’équipe. Toutefois, bien que votre analyse fournisse des perspectives nationales sur le marché de l’emploi, plusieurs questions ont été soulevées concernant la représentativité de ces données pour une scale-up spécialisée dans la retail tech.
Afin de répondre à ces interrogations et d'approfondir l'analyse, Fatima vous demande désormais de développer un véritable tableau de bord interactif.
Ce tableau de bord devra donc non seulement intégrer les éléments que vous avez déjà développés, mais aussi permettre des analyses plus détaillées et ciblées grâce à des filtres pour zoomer sur des aspects spécifiques du marché.
En gros je dois permettre à l’utilisateur de filtrer (ou pas) sur mes indicateurs pour lui donner une vue de détail et vue globale c’est ça ?
Exactement ! Et pour cela vous devez maîtriser pour chaque calcul ce qu’on appelle le “contexte de filtre”. C’est un principe fondamental en DAX, à chaque fois qu’une expression est calculée pour une mesure, le contexte de filtre c’est la combinaison de tous les filtres actifs. C’est comme ça que la mesure sait les valeurs à inclure ou à exclure dans les calculs.
Prenons un exemple :
Nous avons calculé précédemment une mesure du nombre d’offres d’emploi, j’ai ajouté un visuel de segment sur les secteurs d’activité à côté. Lorsque je sélectionne un ou plusieurs secteurs d’activité, la mesure change de valeur (voir ci-dessous).
Pourquoi ?
Ce décompte en “live” du nombre d’offres d’emploi lié à ma sélection est rendu possible grâce à mon modèle de données. La table des secteurs d’activité est connectée à la table des offres d’emploi dans mon modèle.
Ainsi, à chaque fois qu’un secteur d’activité est sélectionné, la table des offres d’emploi est filtrée sur les offres associées à ce secteur d’activité.
Dans le modèle de données, je vois des petites flèches sur les liens, à quoi servent-elles ?
Ces flèches sont le sens de propagation des contextes de filtre. Elles définissent comment les filtres appliqués dans une table se propagent à travers les relations vers d'autres tables.
Les relations peuvent être unidirectionnelles ou bidirectionnelles. Le sens de propagation détermine si et comment les filtres actifs dans une table influencent les calculs dans une autre table liée. Vous pouvez définir le sens de propagation de la relation :
en double-cliquant sur celle-ci dans l’onglet modèle de données,
puis en changeant la sélection dans “Direction du filtre croisé”.
OK j’ai bien compris comment fonctionne le filtrage laissé à la main de l’utilisateur. Mais si je veux garder un indicateur au niveau global, et pas qu’il change de valeur à chaque sélection de l’utilisateur ?
Et bien pour cela nous allons découvrir la fonctionCALCULATE
.
Utilisez la fonction CALCULATE
La fonctionCALCULATE
permet d’évaluer une expression DAX dans un contexte de filtre imposé. AvecCALCULATE
, vous avez la capacité de manipuler le contexte de filtre de manière à inclure ou exclure des données selon des critères spécifiques. Cela vous donne un grand contrôle sur vos calculs, car vous pouvez combiner plusieurs filtres pour des analyses plus complexes.
Regardons en détail la composition de cette fonction :
Syntaxe | Description | Paramètres |
CALCULATE( <expression> [, <filter1> [, <filter2> [, …]]]) | Évalue une expression dans un contexte de filtre modifié. |
|
Prenons un exemple :
Fatima nous demande de calculer la proportion des offres d’emploi pour lesquelles le travail à distance est autorisé. Mais elle nous demande de préciser ce calcul en ne prenant en compte que les emplois à temps plein et d’ignorer les offres d’emploi à temps partiel. Ethikwear ne propose que des offres d'emploi à temps complet.
Dans ce calcul, nous devons donc imposer un filtre dans notre fonction CALCULATE
. Il s’écrit de la façon suivante :
PERCENTAGE_REMOTE_ALLOWED =
CALCULATE (
AVERAGE ( postings[remote_allowed] ) ,
postings[work_type] ="FULL_TIME"
)
Dans notre fonctionCALCULATE()
nous avons ajouté les éléments suivants :
Notre expression, qui est un calcul de moyenne avec
AVERAGE()
sur la colonneremote_allowed
qui contient un 1 ou un 0 pour chaque offre d’emploi afin d’indiquer que l’emploi peut être réalisé à distance. 1 veut dire que l’emploi peut être réalisé à distance, 0 qu’il ne peut pas l’être. EN faisant la moyenne de ces 1 et 0 sur une sélection nous avons donc la proportion des emplois qui peuvent être réalisés à distance,Un filtre sur la colonne
work_type
pour ne sélectionner dans ce calcul que les emplois à temps plein (indiqué enFULL_TIME
dans la colonne).
Pour nous faciliter la vie DAX met à disposition des fonctions de filtres qui sont spécialement conçues pour manipuler les contextes de filtre. Découvrons-les !
Découvrez les fonctions de filtres
Avec les fonctions de filtre, nous pouvons faire abstraction, totalement ou partiellement, des filtres de contexte appliqués par l’utilisateur. En utilisant ces fonctions dans vos expressions DAX, vous pouvez créer des analyses plus complexes et précises en contrôlant explicitement quels filtres doivent être ignorés ou appliqués.
Explorons quelques-unes de ces fonctions clés que nous allons utiliser dans notre fonctionCALCULATE
:
Syntaxe | Description | Paramètres |
FILTER( [<table> | <filter> ) | Renvoie une table qui représente un sous-ensemble d’une autre table ou expression. |
|
ALL( [ <table> | <column> [, <column> [, <column> [,…]]]] ) | Renvoie toutes les lignes d’une table, ou toutes les valeurs d’une colonne, en ignorant les filtres qui ont été appliqués. Cette fonction est utile pour effacer les filtres et créer des calculs sur toutes les lignes d’une table. Exemple : Compter la somme des offres d’emploi de tous les secteurs d’activité, quelque soit la sélection de l’utilisateur. |
|
ALLEXCEPT( <table>, <column> [,<column> [,…]]) | Supprime tous les filtres de contexte de la table, à l’exception de ceux qui ont été appliqués aux colonnes spécifiées. Exemple : Compter la somme des offres d’emploi par secteur d’activité. |
|
C’est un vrai casse-tête ! Je ne suis pas sûr de bien avoir compris les différences et l’intérêt de ces fonctions.:(
C’est tout à fait normal, ce sont des notions complexes qui méritent de la pratique et des EXEMPLES ! Dans le screencast suivant nous allons voir sur un exemple précis les différences de résultats que nous obtenons en utilisant ces différents filtres dans notre fonctionCALCULATE
:
Dans ce screencast, nous avons vu :
L’utilisation de
FILTER
pour appliquer un filtre sur une tableL’utilisation de
ALL
dansCALCULATE
pour évaluer une expression sur toute une table quel que soit le filtreL’utilisation de
ALLEXCEPT
pour autoriser le “slicing” (le filtrage) de la table selon une de ses colonnes
Vous savez maintenant presque tout faire sur DAX ! Avançons sur le tableau de bord pour notre responsable de stage.
À vous de jouer
Contexte
Fatima veut que vous affichiez sur le tableau de bord un indicateur du nombre d’offres d’emploi en cours pour certains postes comme celui de Data Analyst pour lesquels ils rencontrent des difficultés de recrutement (afin de mesurer la concurrence et de sponsoriser leurs offres pour qu’elles sortent du lot quand il y a beaucoup d’offres similaires).
Consignes
Utilisez une mesure pour calculer le nombre d’offres d’emploi intitulées “Data Analyst” dans nos données.
En résumé
Soyez toujours attentifs à l'importance du sens de propagation des contextes et ses impacts sur les calculs et les résultats dans vos analyses de données.
CALCULATE
est l'une des fonctions les plus utiles de DAX. Elle permet d'évaluer une expression DAX dans un contexte de filtre personnalisé.Utilisez les fonctions de filtre de DAX qui vous permettent de gérer les contextes de façon précise et de maîtriser les informations présentées à vos utilisateurs.
Nous n’avons pas parlé des Dates jusqu’ici. Dans le chapitre suivant nous allons voir que DAX propose de nombreux outils pour traiter ce type de données très spécifique. C’est parti !