Optimisation DAX : où trouver le piège DAX caché

Optimisation DAX : où trouver le piège DAX caché

Je veux me concentrer aujourd'hui sur quelque chose que j'appelle le piège DAX caché. Si vous rencontrez cette situation, vous aurez l'impression de perdre la tête parce que votre DAX aura l'air correct, mais cela ne fonctionnera pas. Je vous expliquerai quand cela se produit et ce que vous pouvez faire à ce sujet, et dans le processus, je parlerai également de certaines meilleures pratiques générales d'optimisation DAX. Vous pouvez regarder la vidéo complète de ce tutoriel au bas de ce blog.

Voyons d'abord avec quoi nous travaillons ici. Nous avons environ 10 ans de données de l'Internet Movie Database. Les tableaux de faits sont assez simples et nous avons des données de notation, des données budgétaires et des données brutes.

Aujourd'hui, nous examinerons les recettes mondiales.

Optimisation DAX : où trouver le piège DAX caché

Nous avons également notre table de dates étendues. Il s'agira d'une analyse temporelle basée sur le tableau des dates et le tableau des faits.

Optimisation DAX : où trouver le piège DAX caché

Table des matières

Total mondial brut par an

Nous voulons faire quelque chose de vraiment commun et simple. Notre Total Worldwide Brut n'est qu'une mesure de somme agrégée très simple, que nous souhaitons convertir en pourcentage.

Optimisation DAX : où trouver le piège DAX caché

Pour ce faire, nous prenons le numérateur ( mesure du total mondial brut ) et le dénominateur ( mesure du total mondial brut , mais en supprimant le contexte du filtre d'année).

Optimisation DAX : où trouver le piège DAX caché

J'ai utilisé la car je pense que c'est plus intuitif quand on lit le code, mais si vous préférez la , ça marche tout aussi bien. Nous divisons simplement le numérateur par le dénominateur pour obtenir le résultat.

Si nous prenons la mesure résultante et la déposons dans notre tableau, vous verrez qu'elle fait exactement ce que nous attendons qu'elle fasse. Nous obtenons 100% en bas et nous obtenons les années converties en leurs pourcentages individuels. Jusqu'ici tout va bien, et nous n'avons pas encore rencontré de problèmes.

Optimisation DAX : où trouver le piège DAX caché

Total mondial brut par trimestre

Examinons une situation similaire où nous procédons par trimestre. Cette mesure pourrait être utile car il existe des hypothèses selon lesquelles les recettes de la saison des films d'été sont différentes du début de l'année et vers la fin de l'année menant à la saison des Oscars.

Encore une fois, nous avons exactement la même mesure avec la fonction REMOVEFILTERS sur les numéros de trimestre au lieu de l'année.

Optimisation DAX : où trouver le piège DAX caché

Et si nous déposons la mesure que nous venons de faire dans le tableau, cela fait aussi exactement ce que nous attendons.

Optimisation DAX : où trouver le piège DAX caché

Total mondial brut par mois et par an

Jetons un coup d'œil au troisième cas, qui peut être très courant, où nous voulons regarder par mois et par année.

Optimisation DAX : où trouver le piège DAX caché

Et encore une fois, nous utiliserons la même mesure qu'auparavant. Mais cette fois, nous allons supprimer le filtre sur le mois et l'année.

Optimisation DAX : où trouver le piège DAX caché

Déposons celui-là dans notre table. Tout d'un coup ça ne marche plus.

Optimisation DAX : où trouver le piège DAX caché

Nous pouvons dire ce qui ne fonctionne pas à ce sujet. Nous savons que la mesure mondiale brute fonctionne, ce qui signifie que le numérateur est bon, mais pas le dénominateur. Dans chacun des cas précédents, la fonction REMOVEFILTERS a correctement supprimé le filtre, mais ici, ce n'est manifestement pas le cas.

Nous pouvons en fait tester cela en modifiant ce que nous avons renvoyé ici dans le résultat.

Optimisation DAX : où trouver le piège DAX caché

Au lieu de Result, utilisons Denominator. Gardez à l'esprit que cela va être formaté en pourcentage, donc ça va avoir l'air un peu drôle.

Optimisation DAX : où trouver le piège DAX caché

Ce que nous devrions obtenir pour le dénominateur est le même nombre dans chaque ligne, mais ce n'est pas le cas.

Optimisation DAX : où trouver le piège DAX caché

Nous pouvons dire qu'il ne supprime pas le filtre sur le mois et l'année, et pense que c'est parce que le mois et l'année sont dans le texte.

Optimisation DAX : où trouver le piège DAX caché

Mais le précédent pour le trimestre était également exprimé en texte, donc ce n'est pas simplement parce que son texte. Il ne reste plus qu'à le régler. Une fois que vous déposez le champ sans le trier, il va trier par ordre alphabétique.

Dans la table de dates étendues, examinons ce champ appelé Month & Year . Si nous le regardons dans la colonne Trier par , nous verrons quelque chose d'intéressant.

Nous verrons que cette colonne est triée par un nombre appelé MonthnYear. Lorsque vous triez une colonne par une autre, cette colonne de tri devient en fait une partie du contexte de filtre. C'est ce qui fausse ce calcul.

Optimisation DAX : où trouver le piège DAX caché

Revenons à notre mesure et supprimons le contexte du mois et de l'année que nous utilisons comme tri.

Optimisation DAX : où trouver le piège DAX caché

Nous obtenons maintenant exactement ce que nous devrions, c'est-à-dire le mois et l'année calculés en pourcentage approprié.

Optimisation DAX : où trouver le piège DAX caché

Lors de la suppression d'un contexte de filtre, il faudra deux champs pour le faire lorsqu'il sera trié . Vous pouvez demander qu'au lieu d'avoir à faire deux champs ici, pourquoi ne pouvons-nous pas simplement supprimer les filtres sur l'ensemble de la table de dates ?

La réponse est oui, et cela fonctionnera pour les trois exemples dont nous avons parlé car chacune de ces colonnes fait partie de notre table de dates. La suppression de tout le contexte de filtre sur cette table fonctionnera pour les trois cas, mais c'est en fait une mauvaise idée.

En tant que principe général d'optimisation DAX, vous devez supprimer autant de contexte de filtre que nécessaire pour obtenir le résultat souhaité.

Dans la plupart des cas, vous n'allez pas présenter cela sous forme de tableau. Vous la présenterez sous forme de matrice et vous aurez besoin d'une mesure plus complexe car vous avez deux granularités différentes dans la même colonne. Cette mesure semble compliquée, mais elle ne l'est vraiment pas.

Optimisation DAX : où trouver le piège DAX caché

Ce n'est qu'une extension de ce que nous avons déjà fait. La première partie de ce calcul d'optimisation DAX montre les dénominateurs pour les différentes granularités. Nous supprimons le contexte de filtre pour un mois, pour l'année et pour l'ensemble du tableau.

Optimisation DAX : où trouver le piège DAX caché

Pour la deuxième partie du calcul, nous avons utilisé SWITCH TRUE. Pour cette fonction, il faut aller du plus spécifique au moins spécifique. Le mois est notre portée la plus étroite et la plus spécifique, c'est donc par là que nous commençons. Nous devrons supprimer le contexte en utilisant ces deux champs que nous avons identifiés.

Optimisation DAX : où trouver le piège DAX caché

Pour la portée de l'année, nous devons supprimer le contexte sur l'année et supprimer le contexte sur l'ensemble de la table.

Optimisation DAX : où trouver le piège DAX caché

Jetons un coup d'œil à ce qui se passe si nous devons prendre et supprimer le contexte sur l'ensemble de la table de dates . Nous utiliserons une mesure différente qui supprime le contexte sur l'ensemble de la table de dates pour les trois cas.

Optimisation DAX : où trouver le piège DAX caché

Nous verrons que la mesure supprime trop le contexte. Au lieu de calculer la contribution de chaque mois à cette année, il calcule la contribution de ce mois à l'ensemble des données. Ce n'est pas ce que nous voulons qu'il se produise, car la suppression du contexte de l'ensemble du tableau n'est vraiment qu'un instrument contondant lorsqu'un scalpel est nécessaire.

Conclusion

Il existe de nombreux cas où vous avez une matrice et vous devez contrôler soigneusement le contexte que vous supprimez. Supprimer simplement le contexte sur l'ensemble de la table va causer ce genre de problèmes.

J'espère que lorsque cette situation se présentera (ce qui arrivera invariablement à un moment donné), vous la reconnaîtrez comme le piège caché dont nous avons discuté dans cet article sur l'optimisation DAX, et vous pourrez l'éviter sans la même frustration. que cela m'a causé lorsque je l'ai vu pour la première fois et que je ne pouvais pas comprendre pourquoi mon DAX ne fonctionnait pas correctement.

Si vous avez apprécié le sujet d'optimisation DAX couvert dans ce didacticiel particulier, veuillez 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, qui se consacrent tous à améliorer 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