Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Dans cet article de blog, nous traiterons de certains problèmes gênants liés à l'intelligence temporelle, en particulier les problèmes causés par la granularité hebdomadaire et les problèmes pouvant être causés par le nombre irrégulier de semaines dans une année. Nous utiliserons des décalages pour obtenir une intelligence temporelle précise dans DAX.

Nous avons un scénario intéressant pour vous aujourd'hui. Cela est apparu plusieurs fois récemment sur le forum LuckyTemplates. Ce que les gens voulaient faire, c'était prendre un visuel (qui pouvait être un graphique linéaire ou un graphique à barres) et le faire varier dynamiquement sur la date de début. Vous pouvez regarder la vidéo complète de ce tutoriel au bas de ce blog.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Dans ce cas, nous avons utilisé le même ensemble de données que celui que nous avons utilisé pour le prix au comptant moyen du baril de pétrole . Au lieu de toujours commencer au début de janvier, nous voulions pouvoir cliquer sur le visuel, le changer pour une date de début différente, mais toujours afficher une année de données.

Table des matières

Exemples de scénarios d'intelligence temporelle dans DAX

Il y a plusieurs raisons pour lesquelles vous pourriez vouloir faire cette technique. Vous pouvez l'utiliser si vous avez une métrique qui est constamment réajustée en termes de calcul. Vous souhaiterez peut-être afficher uniquement les données de la période du réajustement vers l'avant.

Une autre raison de l'utiliser est si vous souhaitez visualiser cela de manière animée. Cela prendra essentiellement vos données et les affichera dynamiquement une fois que vous aurez cliqué sur l'accès à la lecture.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Dans ce visuel, nous pouvons modifier la date de début mois par mois pour montrer comment elle change sur une période de 12 mois au fil du temps. Il s'agit d'un visuel intéressant et utile pour différentes analyses de rentabilisation, mais théoriquement, il représente également un certain nombre de problèmes clés liés à DAX et à la modélisation des données.

Passons à LuckyTemplates et examinons d'abord notre modèle de données. Il s'agit d'un modèle de données très simple avec une table de dates étendue et une table de prix au comptant liée aux dates.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Utilisation de décalages pour l'intelligence temporelle dans DAX

L'une des choses sur lesquelles nous travaillerons, ce sont les compensations . Les décalages dans la table de dates étendue sont calculés dynamiquement. Chaque fois que le rapport est actualisé ou ouvert, il passe par le code M. Par exemple, dans un décalage mensuel, il affecte le mois en cours avec 0, le mois précédent avec -1 et deux mois en arrière avec -2. En regardant vers l'avenir, il attribue le mois suivant +1, et pour deux mois à l'avenir +2.

Il s'agit d'un concept simple mais incroyablement puissant lorsque vous traitez de l'intelligence temporelle dans DAX et que vous travaillez avec des mois , des trimestres et des semaines . Si vous n'utilisez pas de décalage, cela crée parfois une certaine complexité dans vos calculs.

Utiliser des décalages signifie utiliser une série continue de nombres où reculer d'un mois est toujours -1 et avancer d'un mois est toujours +1, quel que soit l'endroit de l'année où vous vous trouvez.

Implémentation de la stratégie du canard en caoutchouc pour l'intelligence temporelle dans DAX

Dans le passé, j'ai parlé de l'esquive en caoutchouc , qui consiste à verbaliser votre stratégie à haute voix avant de commencer à écrire votre DAX.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Je réfléchis à haute voix à la manière dont je vais gérer cela dans un contexte mensuel en utilisant l'intelligence temporelle dans DAX. Je commencerais quelque chose en fonction de l'année et du mois sélectionnés, et je sélectionnerais ceux qui utilisent une table déconnectée, car si vous y réfléchissez, toutes les autres sélections impliqueront des années croisées (à l'exception de janvier).

Disons que nous voulons 12 mois à partir de mars, nous nous retrouverons avec au moins deux mois l'année suivante. Si nous utilisons un slicer connecté, nous ne pouvons filtrer que cette année-là et ne pourrons pas filtrer l'année suivante.

Récolter les compensations à partir de la date de début

Faisons cela avec une table connectée pour le mois et l'année. Tout d'abord, nous devons récolter le premier décalage qui traite de la date de début.

Et puis nous voulons avancer ce décalage de 12 mois, puis ne regarder que les dates qui se trouvent dans cet ensemble de décalages. Laissez-moi vous montrer à quoi cela ressemble dans DAX.

Calcul de la plage mensuelle

Il s'agit de notre mesure pour Within Range Monthly , où nous sélectionnons notre année (que nous avons récoltée à partir de la table des années déconnectées) et notre mois (que nous avons récolté à partir de la table des mois déconnectés).

Nous avons également cet autre paramètre où s'il n'y a pas de sélection faite, il sera par défaut à janvier. Ce paramètre sert principalement à des fins de débogage.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Calcul des décalages des mois de début et de fin

Examinons le décalage du mois de départ en calculant le décalage MAX. Nous supprimons tous les filtres du tableau des dates et filtrons jusqu'au mois et à l'année sélectionnés. Pour chaque mois, il ne devrait y avoir qu'un seul décalage correspondant à ce mois et à cette année.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

À partir de ce point, nous pouvons prendre le décalage du mois de fin , qui est juste le décalage du mois de départ + 11 mois.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Ensuite, nous examinons chaque date sélectionnée et déterminons si elle se situe dans le décalage du mois initial et le décalage du mois de fin. s'il tombe dans cette période, nous lui donnons un 1 et sinon, nous lui donnons un 0.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Si nous revenons à la vue mensuelle dans notre visuel, nous pouvons voir le visuel Within Range que nous avons défini comme égal à un. Donc, il ne montre que ces mois dans le décalage du début à la fin. Par exemple, si nous cliquons sur février, nous voyons février à janvier.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Calcul de la plage hebdomadaire

Voyons à quoi cela ressemble d'un point de vue hebdomadaire. Le visuel commence bien au début et va de la semaine 1 à la semaine 52. Jusqu'ici, tout va bien.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Mais si on clique sur les autres années dans le trancheur d'année, on peut voir la 52e semaine alors que certains ont une 53e semaine, ce qui pose beaucoup de problèmes. Vous pouvez voir sur cet exemple que le problème commence à se manifester.

Nous avons une période de départ de l'année 2020 et de la semaine 15 , mais la période de fin est l'année 2021 et la semaine 13 au lieu de l'année 2021 et de la semaine 14 .

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Si nous revenons à la semaine 1, nous pouvons voir que cela commence bien, mais se termine à la semaine 52. Si nous regardons le calcul de la semaine 53 ici, le nombre maximum de semaines pour 2020 et 2021 est de 53 semaines. Cela ne fonctionnera pas pour la granularité hebdomadaire.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Voyons ce que nous pouvons faire pour que cela fonctionne. Nous devons corriger le calcul DAX ici même dans cette partie :

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

En effet, dans certains cas, 51 est correct lorsqu'il n'y a que 52 semaines dans une année, mais pour l'année où il y a 53 semaines, cette dernière période sera supprimée. C'est exactement ce que nous avons vu dans le visuel dynamique pendant des semaines, où le calcul a supprimé cette dernière période des années 2020 et 2021.

Pour résoudre ce problème, nous passons à la mesure Within Range Weekly Wrong , qui semble en fait plus simple que la mesure précédente. Nous avions une mesure de décalage de départ et calculé le décalage maximum. Ensuite, nous avons supprimé le filtre des dates, puis imposé le filtre sur la semaine et l'année sélectionnées en supposant que cela conduirait au décalage correct.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Mais cela ne fonctionne pas car peu importe que vous utilisiez un décalage maximum ou un décalage minimum. Tout ce que nous faisons est d'envelopper un agrégateur afin de ne pas mettre une colonne nue dans une instruction CALCULATE.

Mais si nous revenons ici à l' ISO WeekNumber , nous pouvons voir qu'une année et un numéro de semaine ne déterminent pas de manière unique un décalage hebdomadaire dans cette première période.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

J'ai trouvé un moyen infaillible de le faire. Vous pouvez utiliser MIN, mais il est plus logique de créer cette mesure Week1 Offset . Afin d'obtenir le décalage de la semaine 1, nous avons affaire à la semaine 2 car elle n'est jamais divisée. Qu'il y ait 52 ou 53 semaines dans l'année, la semaine 2 reste intacte.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Dans ce calcul, nous filtrons jusqu'à la semaine 2 pour obtenir le décalage. Et puis une fois que nous obtenons ce décalage de la semaine 2, nous en soustrayons juste un. Cela nous donnera sans ambiguïté le décalage de la semaine 1. Cela finit par résoudre notre problème.

Calcul hebdomadaire de l'intérieur de la plage

Et puis nous revenons à notre mesure hebdomadaire dans la plage et écrivons une instruction IF où si le nombre de récoltes est pour la semaine 1, nous calculons le décalage de la semaine 1. Si ce n'est pas la semaine 1, nous calculons simplement le décalage de la semaine de départ comme nous l'avons fait dans le calcul mensuel précédent.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Et puis le décalage de la semaine de fin sera le décalage de la semaine de début + le numéro de semaine maximum qui pourrait être 52 ou 53. Ensuite, nous soustrayons simplement 1 afin de ne pas compter deux fois le décalage de départ.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Nous pouvons faire la même construction que celle que nous avons utilisée pour la plage mensuelle pour filtrer les semaines, où tout ce qui se situe entre le début et le décalage de fin obtient un 1, et tout ce qui n'obtient pas un 0.

Ensuite, nous allons placer la mesure hebdomadaire dans la plage dans le volet de filtre. Tout vérifie et semble parfaitement correct.

Time Intelligence In DAX : comment sélectionner dynamiquement la période de démarrage

Nous pouvons cliquer sur l'axe de lecture et exécuter la granularité de la semaine. Nous pouvons voir qu'il fonctionne correctement, tout comme il l'a fait dans le contexte du mois.

Conclusion

Il s'agit d'une plongée assez profonde dans l'intelligence temporelle dans DAX, où nous avons discuté de la manière dont nous pouvons résoudre certains des problèmes liés aux numéros de semaine. J'espère que vous avez trouvé ce didacticiel utile et qu'il vous a fourni des outils supplémentaires dans votre boîte à outils lorsque vous faites face à une situation de semaine problématique.

Si vous avez apprécié le contenu couvert dans ce didacticiel particulier, n'oubliez pas de vous abonner à la chaîne de télévision LuckyTemplates. Nous avons une énorme quantité de contenu qui sort tout le temps de moi-même et d'une gamme de créateurs de contenu, tous dédiés à l'amélioration de la façon dont vous utilisez LuckyTemplates et Power Platform.


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