Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Dans cet article de blog, nous allons examiner une question qui a été posée sur le forum LuckyTemplates et utiliser une technique LuckyTemplates en langage DAX pour la résoudre. Si vous souhaitez suivre et télécharger les fichiers, visitez simplement le forum LuckyTemplates et accédez à . Vous pouvez regarder la vidéo complète de ce tutoriel au bas de ce blog.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Pour expliquer le scénario que nous allons couvrir, nous avons un tableau simple à titre d'exemple. Dans la première colonne, nous avons le niveau financier 1 . Dans la deuxième colonne, nous avons une date nommée Terminé. Dans la dernière colonne, nous avons la combinaison du niveau financier et de la date d'achèvement, que nous nommerons Revenu .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Ensuite, nous avons un segment pour la date et le nom du client .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Ce que nous voulons faire pour une période de temps spécifique, c'est identifier les trois premières dates qui ne sont pas nulles. Et puis dans ces trois premières dates, nous voulons identifier le niveau financier.

Dans la première version de la mesure, j'ai répertorié les dates inférieures au 29/04/2021 dans lesquelles nous avons des revenus.

Et à ces dates, on veut identifier les niveaux financiers qui ont fait quelques revenus. Je vais vous expliquer comment nous pouvons réaliser ce calcul.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Table des matières

Modélisation des données

Avant d'écrire le DAX proprement dit, examinons rapidement le modèle de données qui contient plusieurs tables. Nous ne sommes intéressés que par la table Date , la table Data , la table Job Category et la table Customer .

Notez que la table Customer n'est pas vraiment importante car elle n'est utilisée qu'à l'intérieur d'un slicer.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

La mesure des revenus est calculée dans le tableau de données. La catégorie Emploi contient le niveau financier que nous avons sur la matrice. Ensuite, nous utilisons la colonne Date de la table Date de notre trancheuse.

Version 1

Débarrassons-nous de tout de la matrice et repartons de zéro. Je vais créer une nouvelle mesure et l'appeler V1 car il s'agira de la première version. Nous allons également examiner deux autres variantes.

Préparation du contexte de filtre

La première chose que nous allons faire est de récupérer toutes les valeurs du niveau financier du contexte de filtre. Nous allons créer une et la nommer comme FinancialLevelInFilterContext .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Pour récupérer les valeurs du contexte de filtre, nous allons utiliser la sur la table Job category qui contient la colonne du niveau financier. Ensuite, nous devons créer une autre variable et la nommer Result . Ensuite, écrivez et fermez-le également.

Dans le premier argument, nous avons une sélection sur le trancheur de date. Dans ces dates, nous voulons identifier les dates qui n'ont pas de 0 et qui ont au moins des revenus.

Si vous souhaitez accéder à toutes les dates sélectionnées dans ce segment, nous devons utiliser la sur la table Date.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Et puisque nous avons le niveau financier sur la matrice, nous devons également nous assurer que nous supprimons cette valeur particulière du contexte du filtre. Nous pouvons utiliser la sur la catégorie Job, puis écrire le niveau financier 1.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Maintenant que notre contexte de filtre est préparé, nous pouvons écrire le calcul le plus interne pour CALCULATE. Tout d'abord, nous allons déclarer une variable, qui sera une combinaison du niveau financier et de la colonne de date comme nous l'avons vu dans le premier tableau.

Ensuite, nous utiliserons la et utiliserons la table Data pour résumer ces deux tables : Job category et Date table.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Cela fournira la combinaison du niveau financier et de la colonne de date qui existe dans le tableau de données. Ensuite, nous allons créer une autre variable dans laquelle nous stockerons la valeur de la ligne de revenu pour la première variable que nous avons créée.

Le nom de cette variable sera FinancialLevelAndDatesWithRevenue . Le code de cette variable sera le sur la variable précédente. Ensuite, nous allons créer une colonne virtuelle qui sera Revenue pour initier la transition de contexte. Ainsi, pour chaque ligne de cette variable, nous avons attribué le revenu.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Cette table contient les revenus, qui ont également zéro. Nous devons filtrer ces lignes avec zéro. Pour ce faire, nous pouvons créer une autre variable et la nommer RemoveZeroes .

Nous allons utiliser la sur la variable précédente, puis nous assurer que le revenu ne sera pas égal à zéro. Il peut être supérieur à zéro ou inférieur à zéro, mais ne doit pas être strictement égal à zéro.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Et puis nous allons récupérer la date de la variable RemoveZeroes . Pour ce faire, nous pouvons créer une autre variable et la nommer KeepOnlyDates .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Je peux utiliser la pour me débarrasser des dates en double renvoyées par la .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Ensuite, nous allons identifier les trois premières dates par ordre décroissant. Nous allons utiliser une autre variable et la nommer Last3Dates , puis utiliser la .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Ensuite, nous utiliserons le sur les trois dernières dates de la colonne de date, puis utiliserons un délimiteur.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Faisons glisser et déposer notre mesure nouvellement créée à l'intérieur de cette matrice. Le résultat que nous obtenons est le 31/03/2021, le 07/04/2021 et le 02/04/2021. Cela signifie que notre mesure fonctionne.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Revenons à l'éditeur et débarrassons-nous de la partie RETURN CONCATENATEX. Pour récupérer ces trois dernières dates, nous pouvons vérifier quelles lignes de la variable RemoveZeroes font réellement partie de ces trois dernières dates.

Et pour cela, nous allons créer une autre variable DatesInLast3Dates et utiliser la fonction FILTER sur RemoveZeroes . Cela va retourner une table qui comprend une catégorie d'emploi et une date.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Nous résumerons la colonne des revenus que nous avons créée dans ce tableau. Renvoyons SUMX sur DatesInLast3Dates, puis résumons la colonne des revenus.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Avec ce calcul, nous n'obtenons qu'une seule valeur pour chaque ligne, car nous avons supprimé la catégorie Job du contexte de filtre.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Nous allons utiliser la variable que nous avons créée au début pour vérifier si chaque ligne de la variable DatesInLast3Dates est disponible dans le contexte du filtre. Nous pouvons écrire une autre variable et la nommer IsInFilterContext .

Cela filtrera les dates dans la variable DatesInLast3Dates . Ensuite, je renverrai SUMX sur le contexte IsInFilter et résumerai la colonne des revenus.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Une fois que nous avons appuyé sur Enter , vous pouvez voir que nous obtenons le même résultat que nous avions au début.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Vérification du résultat du calcul LuckyTemplates du langage DAX

Pour vérifier que nous obtenons réellement le résultat correct, nous pouvons créer une nouvelle table CALCULATE qui nous aidera à déboguer, identifier et vérifier que le code que nous avons écrit jusqu'à présent renvoie réellement le résultat correct.

Créons une copie du code que nous avons écrit jusqu'à présent. Je vais simplement copier la partie en surbrillance ci-dessous, revenir en arrière pour créer une nouvelle table et coller le code en surbrillance. Nous n'allons pas prendre la peine de nommer cette table car elle ne nous intéresse pas.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Et nous pouvons simplement écrire RETURN DatesInLast3Dates . Si je clique sur Confirm , nous obtenons une table mais nous savons qu'elle ne renvoie pas encore le bon résultat car nous devons en fait imiter le comportement du slicer.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Nous pouvons envelopper ce code dans un CALCULATETABLE et tout indenter. Dans la dernière partie, je vais écrire que la date doit être supérieure ou égale au 15/03/2021 et que le nom du client doit être égal à DHL Supply Chain .

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Le tableau que nous avons créé à l'intérieur de cette mesure renvoie pratiquement le résultat correct. Nous pouvons utiliser un CALCULATETABLE pour vérifier la table virtuelle que vous créez dans votre calcul.

Autres calculs LuckyTemplates du langage DAX

Maintenant que nous savons que notre calcul fonctionne et que nous comprenons ce qui se passe réellement dans les coulisses, nous pouvons examiner d'autres méthodes pour calculer le même problème. Tout d'abord, créons un double de la mesure que nous avons déjà créée.

Version 2

Cette fois, nous n'allons pas nous appuyer sur les fonctions VALUES et FILTER, nous allons donc nous en débarrasser. Nous supprimerons le résultat de retour, ainsi que la dernière variable que nous avons créée dans CALCULATE. Ensuite, nous convertirons CALCULATE en CALCULATETABLE.

Et au lieu de retourner une valeur scalaire, cette fois nous allons retourner le DatesInLast3Dates . Cela renverra le même CALCULATETABLE que nous avons créé précédemment. Nous allons utiliser la fonction CALCULATE, et dans le premier argument, nous allons calculer la mesure des revenus et injecter CALCULATETABLE comme contexte de filtre.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Une fois que je l'ai apporté à la matrice, vous pouvez voir que nous renvoyons la même valeur totale pour chaque cellule.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Utilisation de la fonction KEEPFILTERS

Pour le moment, nous savons que le calcul en arrière-plan fonctionne correctement, mais comment savoir avec certitude que pour chaque cellule, nous ne rapportons que la valeur de ce niveau financier ?

Avec l'aide de CALCULATETABLE, nous avons créé une table qui contient le niveau financier, la colonne de date et la colonne de revenus. Nous pouvons utiliser la fonction de filtre de clé pour créer une intersection entre le contexte de filtre qui existe en dehors de CALCULATETABLE et celui qui est créé par CALCULATETABLE.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Une fois que nous avons cliqué sur Confirmer, nous pouvons voir que nous rapportons la valeur correcte pour chaque cellule et que les versions 1 et 2 renvoient la valeur correcte.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Alors, comment ça marche? La table CALCULER va retourner le niveau Maintenance , puis Location , Service Externe et Pièces détachées . La va créer une intersection entre la maintenance et cette table.

Rental va créer le contexte de filtre initial, puis CALCULATETABLE va retourner toutes les valeurs de la catégorie Job. Ensuite, il y aura une intersection entre la location et la table renvoyée par CALCULATETABLE. Nous allons uniquement renvoyer les tables ou les lignes pour cette partie Location uniquement.

Et puis enfin, lorsque nous injectons SUMMARIZE dans le contexte du filtre, la fonction CALCULATE va calculer le revenu uniquement pour la location. Le même processus se produit pour chaque ligne.

Variante 3

Examinons une autre façon de calculer le même calcul à l'aide du langage DAX LuckyTemplates. Créons une copie de la mesure Version 2 et créons une autre mesure. Nous allons nommer cette version 3.

L'idée derrière ce calcul est que puisque nous calculons les revenus à l'aide de la fonction CALCULATE, nous n'avons pas besoin d'utiliser la partie ADDCOLUMNS car nous dupliquons la même chose à l'intérieur et à l'extérieur de CALCULATE. Au lieu de cela, nous pouvons simplement écrire que le revenu ne doit pas être égal à 0.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Une fois que j'ai cliqué sur Confirmer, nous devons nous assurer que le code fonctionne, alors faisons glisser la mesure à l'intérieur de la matrice.

Vous pouvez voir que le code renvoie en fait la même valeur pour chaque cellule.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Si j'essaie de modifier le contexte du filtre en modifiant la date dans le trancheur de date et en sélectionnant quelques valeurs dans le nom du client, vous pouvez voir que les trois mesures renvoient en fait la même valeur pour chaque ligne.

Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

Conclusion

Dans ce didacticiel, nous avons appris à utiliser une logique complexe consistant à remonter dans le temps à partir de la date de fin pour identifier les trois premières dates. Sur la base de cette technique LuckyTemplates du langage DAX, nous avons pu calculer les revenus et afficher uniquement les valeurs qui existent dans le contexte de filtre. C'est tout pour le moment dans ce tutoriel.

Leave a Comment

Gestion des erreurs dans Power Automate via le branchement parallèle

Gestion des erreurs dans Power Automate via le branchement parallèle

Découvrez l

Comparaison de tables dans Power Query | Tutoriel LuckyTemplates

Comparaison de tables dans Power Query | Tutoriel LuckyTemplates

Découvrez comment comparer facilement des tables dans Power Query pour signaler les différences et optimiser vos analyses de données.

Colonne fractionnée LuckyTemplates par délimiteurs dans DAX

Colonne fractionnée LuckyTemplates par délimiteurs dans DAX

Dans ce blog, vous découvrirez comment diviser les colonnes dans LuckyTemplates par délimiteurs à l'aide de DAX, une méthode efficace pour gérer des modèles de données complexes.

SELECTEDVALUE DAX Exemple - Sélection de trancheuse de récolte

SELECTEDVALUE DAX Exemple - Sélection de trancheuse de récolte

Découvrez comment récolter une valeur avec SELECTEDVALUE DAX pour des calculs dynamiques dans LuckyTemplates.

Calculer la marge en pourcentage dans LuckyTemplates à laide de DAX

Calculer la marge en pourcentage dans LuckyTemplates à laide de DAX

Calculez la marge en pourcentage à l

Modifier les formats de date à laide de léditeur Power Query

Modifier les formats de date à laide de léditeur Power Query

Dans ce didacticiel, nous allons explorer une méthode rapide pour convertir du texte en formats de date à l

Enregistrer la pièce jointe dun e-mail sur SharePoint avec Power Automate

Enregistrer la pièce jointe dun e-mail sur SharePoint avec Power Automate

Dans ce blog, vous apprendrez à enregistrer automatiquement la pièce jointe d

Comment adapter les cellules Excel au texte : 4 solutions simples

Comment adapter les cellules Excel au texte : 4 solutions simples

Découvrez comment adapter les cellules Excel au texte avec ces 4 solutions simples pour améliorer la présentation de vos données.

Générateur de rapports SSRS : formater les en-têtes dans un rapport paginé

Générateur de rapports SSRS : formater les en-têtes dans un rapport paginé

Dans ce didacticiel SSRS Report Builder, découvrez comment utiliser le générateur d

Thème de couleur dans les rapports LuckyTemplates - Conseils et techniques

Thème de couleur dans les rapports LuckyTemplates - Conseils et techniques

Découvrez les outils pour créer un thème de couleur efficace pour vos rapports LuckyTemplates et améliorer leur apparence.