Tutoriel LuckyTemplates du langage DAX sur TOPN inversé

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.


Quest-ce que le self en Python ? Exemples concrets

Quest-ce que le self en Python ? Exemples concrets

Qu'est-ce que le self en Python ? Exemples concrets

Comment enregistrer et charger un fichier RDS dans R

Comment enregistrer et charger un fichier RDS dans R

Vous apprendrez à enregistrer et à charger des objets à partir d'un fichier .rds dans R. Ce blog expliquera également comment importer des objets de R vers LuckyTemplates.

First N Business Days Revisited - Une solution de langage de codage DAX

First N Business Days Revisited - Une solution de langage de codage DAX

Dans ce didacticiel sur le langage de codage DAX, découvrez comment utiliser la fonction GENERATE et comment modifier dynamiquement le titre d'une mesure.

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Ce didacticiel explique comment utiliser la technique Multi Threaded Dynamic Visuals pour créer des informations à partir de visualisations de données dynamiques dans vos rapports.

Introduction au filtrage du contexte dans LuckyTemplates

Introduction au filtrage du contexte dans LuckyTemplates

Dans cet article, je vais parcourir le contexte du filtre. Le contexte de filtrage est l'un des principaux sujets que tout utilisateur de LuckyTemplates doit d'abord connaître.

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Je souhaite montrer comment le service en ligne LuckyTemplates Apps peut aider à gérer différents rapports et informations générés à partir de diverses sources.

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Découvrez comment calculer les modifications de votre marge bénéficiaire à l'aide de techniques telles que la création de branches de mesure et la combinaison de formules DAX dans LuckyTemplates.

Idées de matérialisation pour les caches de données dans DAX Studio

Idées de matérialisation pour les caches de données dans DAX Studio

Ce didacticiel abordera les idées de matérialisation des caches de données et comment elles affectent les performances des DAX dans la fourniture de résultats.

Rapports dentreprise à laide de LuckyTemplates

Rapports dentreprise à laide de LuckyTemplates

Si vous utilisez encore Excel jusqu'à présent, c'est le meilleur moment pour commencer à utiliser LuckyTemplates pour vos besoins en matière de rapports commerciaux.

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Qu'est-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir