Quest-ce que le self en Python ? Exemples concrets
Qu'est-ce que le self en Python ? Exemples concrets
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.
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 .
Ensuite, nous avons un segment pour la date et le nom du client .
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.
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.
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 .
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.
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.
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.
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.
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.
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 .
Je peux utiliser la pour me débarrasser des dates en double renvoyées par la .
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 .
Ensuite, nous utiliserons le sur les trois dernières dates de la colonne de date, puis utiliserons un délimiteur.
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.
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.
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.
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.
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.
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.
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.
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.
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 .
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.
Une fois que je l'ai apporté à la matrice, vous pouvez voir que nous renvoyons la même valeur totale pour chaque cellule.
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.
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.
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.
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.
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.
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.
Qu'est-ce que le self en Python ? Exemples concrets
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.
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.
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.
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.
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.
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.
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.
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.
Qu'est-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir