DAX : Évolution du nombre de clients ayant plus d’un ticket actif au cours des 10 derniers jours

Publié le 05 septembre 2019
par Sophie Marchand M.Sc.
Image DAX dernier 10 jours

Récemment, un usager a posé la question ci-dessous sur notre forum. Cet article vise à y répondre en utilisant une mesure en DAX, basée sur les fonctions suivantes : IF, CALCULATE, SUMX, MAX DISTINCTCOUNT et DATESINPERIOD.

 

Question forum réitération

 

Apprendre à créer des mesures en DAX pour toutes les situations

Je l’ai répété à plusieurs reprises sur ce blogue. Apprendre le langage DAX n’est pas simple. Si on prépare soi-même ses données, il faut d’abord très bien maîtriser les concepts de normalisation de données et concevoir des modèles de données selon les règles de l’art (notamment bien maîtriser les schémas en étoile). Ensuite, il faut absolument maîtriser les contextes d’évaluation et c’est vraiment cette notion qui est la plus complexe car c’est très subtile. Je ne connais personne qui a été en mesure de maîtriser les contextes d’évaluation en 24 heures… Il faut d’abord apprendre ce que c’est, voir des exemples, pratiquer, revenir vers la théorie et pratiquer à nouveau avant qu’on l’on puisse réellement en absorber l’essence. À ce sujet, je vous invite d’ailleurs à assister à notre éventuel webinaire portant sur les contextes d’évaluation et/ou à suivre notre formation d’introduction au langage DAX et notre formation sur les modèles de données.

 

Données de départ

Imaginons les données de départ suivantes, triées d’abord par client, ensuite par ticket ID et ensuite par date:

 

DAX - Données départ

 

Premier essai de mesure en DAX

À priori, mon premier réflexe a été d’utiliser la fonction SUMX pour effectuer des calculs itératifs sur la table DimClients (i.e., la table qui présente la liste des clients sans doublons). L’idée était de compter le nombre de tickets différents (avec la fonction DISTINCTCOUNT), pour chaque client (référence à la table DimClients), dans les 10 derniers jours (avec la fonction DATEINPERIOD).

 

J’ai donc créé la mesure suivante:

 

mesure en DAX

 

Visualisation des résultats du premier essai

Comme toujours, afin de vérifier le comportement de ma mesure, j’ai utilisé des visualisations. D’abord, j’ai utilisé une visualisation de table, dans laquelle j’ai inséré la liste des clients et la mesure NbreTickets10Jrs. Ensuite, j’ai utilisé une visualisation de carte présentant le total de ma mesure. Le comportement me semblait bon. J’ai alors ajouté un filtre de dates pour vérifier que le calcul se faisait correctement. Ci-dessous, on voit donc qu’au 18 janvier, le client A présente un total de 2. Ce chiffre est en ligne avec les données de départ puisque le ticket #2 du client A a été traité dans les 10 jours précédent le 18 janvier (incluant le 18 janvier) et le ticket #9 a également été traité dans les 10 jours précédent le 18 janvier (on voit un suivi au 10 janvier). Si vous vérifiez un à un les totaux, vous verrez qu’ils retournent tous la valeur attendue.

 

Résultat 18 janvier

 

Retour vers la demande d’origine

Dans sa question originale, l’usager cherche à tracer un graphique de l’évolution de ce montant. J’ai donc transposé les données sur un graphique en courbe.

 

Graphique évolution 18 janvier

 

C’est là que j’ai réalisé que pour certains mois, j’avais des valeurs supérieures à 8 alors que mon échantillon comporte 8 clients… ça ne fait donc pas de sens… En effet, on ne souhaite pas voir le nombre de tickets uniques traités dans les 10 derniers jours mais plutôt le nombre de clients uniques qui ont au moins un ticket traité dans les 10 derniers jours. Un ajustement de formule s’imposait alors.

 

Vous devez analyser de grandes quantités de données et les présenter dans des rapports et tableaux de bord, avec des indicateurs de performance pertinents ? Développez vos compétences avec nos formations en Power BI.

Formations Power BI disponibles en anglais

 

Deuxième essai de mesure en DAX : Intégration de la fonction IF

À mon deuxième essai, j’ai intégré une fonction IF dans ma mesure, que j’ai nommée NbreClient10Jrs, pour me permettre de retourner un 1 lorsqu’un client a au moins un ticket ouvert au cours des 10 derniers jours et j’ai donc obtenu le résultat suivant:

 

DAX nombre clients vs nombre tickets

 

Et voici le détail de la nouvelle mesure:

 

mesure en DAX

 

J’ai ensuite transposé le tout dans un graphique en courbe, que j’ai comparé au premier. On voit bien dans le deuxième graphique que le total n’est jamais supérieur à 8, le nombre total de clients dans mon échantillon.

 

 

Conclusions

Je constate qu’au moins 80% des questions posées sur le forum, en lien avec Power Pivot et Power BI, émanent d’un manque d’expérience avec la création de modèles de données et surtout, avec les contextes d’évaluation. C’est peut-être moins excitant de parler de contextes d’évaluation que de dessiner des visualisations mais malheureusement, il est impossible de créer des visualisations percutantes sans maîtrise les contextes d’évaluation. Je vous recommande alors chaudement de prendre le temps de vous former sur le sujet. Vous trouverez d’ailleurs plusieurs articles sur ce blogue à ce sujet. Bonne lecture!

Voici quelques commentaires d’apprenants ayant suivi la formation Introduction au langage DAX :

Le-CFO-masque_Commentaires-Introduction-langage-DAX

 

Fichier d’accompagnement VIP à télécharger

Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.


CFO-Masque_Formations-en-ligne_FBLa mission du CFO masqué est de développer les compétences techniques des analystes et des contrôleurs de gestion en informatique décisionnelle avec Excel et Power BI et favoriser l’atteinte de leur plein potentiel, en stimulant leur autonomie, leur curiosité, leur raisonnement logique, leur esprit critique et leur créativité.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut