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

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

Reprenons le problème abordé dans ce tutoriel , qui comparait dynamiquement les N premiers jours ouvrés de chaque mois. Ce problème était basé sur une requête d'un membre de LuckyTemplates sur notre forum, où il voulait rechercher et comparer dynamiquement les 5, 10, 15 et 20 premiers jours facturables (les non-week-ends et les jours fériés) pour un mois donné contre le mois précédent.

Au lieu d'utiliser PowerQuery, nous proposerons une solution de langage de codage DAX. Vous pouvez regarder la vidéo complète de ce tutoriel au bas de ce blog.

Dans la première vidéo , j'ai trouvé une solution de requête de puissance sur la façon de résoudre ce problème. Mais ensuite, l'un de nos experts LuckyTemplates, Antriksh Sharma, a proposé une mesure brillamment efficace qui vaut également la peine d'être approfondie. Nous discuterons de certaines des techniques qu'il a utilisées pour développer une mesure, ce qui vous fournira des outils supplémentaires dans votre boîte à outils DAX.

Cela a certainement été le cas pour moi et pour certains des autres experts qui se sont penchés sur la question. La comparaison à l'identique de jours ouvrables comparables sur plusieurs mois est un modèle précieux en général qui peut être utilisé dans de nombreuses situations.

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

Plongeons-nous dans la requête de puissance et regardons ce qu'Antriksh a fait ici. Nous avons le mois et l'année , les ventes totales et enfin, les ventes totales pour N jours ouvrables que nous avons sélectionnés à l'aide d'une requête de puissance basée sur le paramètre de simulation que nous avons développé.

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

Antriksh a adopté une approche très différente, où il a utilisé une mesure étonnamment courte pour résoudre tout ce problème. La première chose que j'ai remarquée à ce sujet était l'utilisation de la commande .

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

Il s'agit d'une fonction DAX que je n'utilise pas très souvent, mais qui convient parfaitement à ce type de problème. Si nous jetons un coup d'œil au guide SQL BI DAX, il est dit que la fonction GENERATE est une fonction de table qui utilise comme entrée deux tables différentes, puis fait un équivalent de la commande SQL CROSS APPLY.

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

Il prend donc une table de base (Table1) et itère dessus, puis prend une deuxième expression de table et l'évalue pour chaque ligne de la première table, puis revient à la table en tant que sortie.

Prenons la mesure d'Antriksh et déposons-la dans le tableau. Nous pouvons voir qu'il produit exactement les mêmes résultats que la solution de requête de puissance que nous avons faite la dernière fois. C'est donc bien et valide assez bien les deux mesures.

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

Démontons cette mesure. Le premier filtre appliqué ici est Dates[IsBusinessDay] = TRUE. Cela supprime toutes les dates autres que les week-ends et les jours fériés en fonction du champ IsBusinessDay de la table de dates étendue.

Nous en parlons beaucoup plus dans le premier tutoriel , où nous avons également expliqué comment lier cela à notre table de vacances.

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

La partie intéressante de cela vient vraiment des deux entrées de table. Le premier tableau est juste un tableau à une colonne du champ Mois et année dans le tableau Date.

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

Mais la deuxième entrée de table est l'endroit où se produisent les choses intéressantes. Antriksh a utilisé une , puis a utilisé notre paramètre dynamique comme nombre de lignes dans le TOPN.

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

La mesure Total Sales est attachée à la deuxième table, puis appliquée à la première table.

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

Table des matières

Comprendre une mesure complexe à l'aide du langage de codage DAX

L'un des moyens les plus simples de comprendre ce que fait une mesure complexe comme celle-ci est d'aller dans Tabular Editor . Nous pouvons jeter un œil à cette expression et comprendre ce que fait cette expression TOPN en premier.

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

Copions la partie TOPN et créons une nouvelle requête DAX . N'oubliez pas que les requêtes DAX commencent par EVALUATE.

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

Lorsque nous collons la partie TOPN, nous verrons que cela extrait les 5 premières dates de la table des commandes client. Il y a une table dans le TOPN qui est composée des valeurs de toutes les dates de commande dans la table des ventes.

Cette fonction TOPN prend la valeur du paramètre de simulation (qui dans ce cas est 5) et l'applique au champ de date de la commande client. Ensuite, il extrait les 5 premières dates dans le contexte du filtre dans un ordre croissant basé sur ce champ.

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

Étant donné qu'il n'y a pas de contexte de filtre supplémentaire, il extrait simplement ces 5 premières dates de l'ensemble du tableau.

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

La colonne @Sales ajoute simplement le total des ventes dans le contexte de filtre approprié à la table TOPN.

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

Jusqu'à présent, nous avons le premier tableau du mois et de l'année, le deuxième tableau du TOPN des premières N dates de la table des ventes, puis le total des ventes associées à cela.

Utilisation de la table GENERATE dans le langage de codage DAX

Voyons ce que fait cette table GENERATE. Nous allons revenir dans Tabular Editor et créer une nouvelle requête DAX.

Nous allons commencer comme nous le faisons toujours avec EVALUATE, coller la partie GENERATE du code et cliquer sur 5.

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

Nous pouvons voir que pour chaque ligne de la première table, il itère et rejoint les 5 lignes de la table TOPN évaluées en contexte avec la fonction @Sales.

Cela a pris les 5 premiers jours ouvrables d'avril, les 5 premiers jours ouvrables de mai, les 5 premiers jours ouvrables de juin, et ainsi de suite jusqu'à ce qu'il arrive à la fin du premier tableau.

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

C'est exactement ce dont nous avons besoin, et maintenant il devient relativement simple d'additionner ces valeurs. Nous avons le résultat (qui est la variable de table des résultats GENERATE) et nous devons ensuite résumer la fonction @Sales.

Dans le contexte, nous résumons maintenant les 5 premiers jours ouvrables d'avril, les 5 premiers jours ouvrables de mai, et ainsi de suite jusqu'à ce que nous arrivions à notre total de 23 737 430 $, auquel cas il n'a pas de contexte de mois et d'année pour fonctionner .

Cela résume toute la colonne @Sales et nous donne exactement le même total que celui que nous avions dans notre solution de requête de puissance.

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

Vous pouvez voir que si nous changeons le slicer en 10, nous obtenons dynamiquement les mêmes résultats avec le langage de codage DAX que nous avons obtenus dans PowerQuery.

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

Nous avons également le graphique à barres en bas qui s'ajuste dynamiquement pour refléter les changements que nous avons apportés.

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

Ajuster dynamiquement le titre de la mesure

Il y a une autre astuce supplémentaire que je voulais vous montrer. Vous pouvez créer un ajustement dynamique sur votre paramètre de simulation et le lier dynamiquement à un titre de mesure.

Par exemple, si nous changeons le segment en haut en 15, il changera dynamiquement le nom de la mesure en bas en Total Sales for the First 15 Business Days of Each Month .

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

Il existe un moyen simple de le faire dans DAX en utilisant la mise en forme conditionnelle . Nous prenons simplement trois cordes. Le premier est Total Sales for First , puis concaténez-le avec la valeur que nous récoltons à partir du paramètre what-if, puis liez-le simplement au reste du titre.

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

Ensuite on rentre dans le visuel, on passe à la mise en forme conditionnelle du titre, et on clique sur fx .

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

Nous formaterons par valeur de champ et choisirons cette mesure de titre dynamique. Cela changera la sélection du paramètre de simulation.

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

Conclusion

Nous avons maintenant une solution complète utilisant le langage de codage DAX. Nous avons discuté d'une manière vraiment créative et efficace de le faire en utilisant la fonction GENERATE. Je tiens à remercier Antriksh d'avoir partagé avec nous ses brillantes connaissances DAX. J'ai beaucoup appris en parcourant sa solution DAX, et j'espère que vous aussi.


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