Optimisation de DAX pour LuckyTemplates à laide de DAX Studio - Moteurs de formule

Optimisation de DAX pour LuckyTemplates à laide de DAX Studio - Moteurs de formule

Lorsque vous optimisez votre modèle de données et votre DAX pour LuckyTemplates, il est utile de se rappeler que deux moteurs fonctionnent en arrière-plan : le moteur de formule et le moteur de stockage .

Ces deux moteurs fonctionnent ensemble pour renvoyer les résultats nécessaires à l'utilisateur. Ils fournissent le jeu de résultats sous la forme d'un tableau ou d'une valeur d'échelle.

Table des matières

Le rôle du moteur de formule

Dans cet article, nous allons nous concentrer sur le moteur de formule.

Le moteur de formule est le moteur de niveau supérieur qui gère l'ensemble de l'architecture d'une requête.

Quoi que vous fassiez lors de l'exécution d'une requête ou lors de la création d'une colonne calculée ou d'une table calculée, le moteur de formule entre en jeu.

Le moteur de formule comprend les requêtes reçues non seulement dans DAX, mais également dans MDX. Par exemple, lorsque vous utilisez Excel, vous créez des modèles croisés dynamiques basés sur des tableaux croisés dynamiques, et les tableaux croisés dynamiques utilisent en fait le langage MDX.

C'est là que le moteur de formule entre en jeu. Comme il comprend à la fois DAX et MDX, vous pouvez utiliser un autre modèle LuckyTemplates. Les requêtes envoyées à partir de ce modèle de données utiliseront DAX, tandis que les requêtes provenant du modèle pivot utiliseront MDX.

Comment fonctionne le moteur de formule

La compréhension des requêtes provenant de la source MDX ou de la source DAX n'est qu'un des facteurs des performances du moteur de formule. Il passe également par d'autres étapes pour vous aider à travailler sur vos requêtes.

Tout d'abord, il doit générer un plan de requête que le moteur de stockage comprend . En tant que moteur de niveau inférieur, le moteur de stockage ne sait pas réellement si un tableau croisé dynamique dans Excel ou un visuel dans LuckyTemplates a exécuté la requête.

Lors de la création d'un plan de requête, le moteur de formule construit d'abord un plan de requête logique, puis il crée un plan de requête physique. Les plans de requête logique et physique doivent se ressembler.

Après avoir terminé le plan de requête physique, l'utilisateur ou l'outil client obtient l'ensemble de résultats. À partir de là, l'outil client dicte comment il utilisera les résultats ou l'ensemble de données pour afficher le résultat final à l'utilisateur.

Principales limites du moteur de formule

Le moteur de formule joue un rôle énorme lorsque vous optimisez DAX pour LuckyTemplates à l'aide de DAX Studio. Cependant, il comporte également certaines limitations.

Tout d'abord, le moteur de formule utilise toujours un seul cœur pour gérer l'ensemble de votre opération, quel que soit le nombre de cœurs de processeur disponibles dans votre système .

Lorsque j'ouvre mon gestionnaire de tâches, vous verrez que mon processeur a six cœurs.

Optimisation de DAX pour LuckyTemplates à l'aide de DAX Studio - Moteurs de formule

Malgré ce fait, le moteur de formule choisira toujours l'un de ces six cœurs avec lequel travailler, tandis qu'il laissera le moteur de stockage utiliser le reste.

Deuxièmement, le moteur de formule n'a pas d'accès direct à votre base de données . En raison de cette limitation, vous devez stocker les données soit dans la mémoire interne, soit dans la base de données et créer une requête DirectQuery sur cette base de données.

Il s'appuie également sur le moteur de stockage pour obtenir les données sous la forme d'un cache de données. Le moteur de formule effectue ensuite une itération sur ce cache de données avant de pouvoir fournir des résultats à l'utilisateur final.

Comment le moteur de formule aide à optimiser DAX pour LuckyTemplates

Parfois, lorsque vous essayez d'optimiser votre modèle de données ou votre DAX pour LuckyTemplates, vous remarquerez que le moteur de stockage ralentit lorsqu'il exécute des requêtes. Dans ce cas, vous pouvez utiliser le moteur de formule pour effectuer l'ensemble du calcul afin d'optimiser le processus.

Notez que si le moteur de formule finit par construire tout seul la table entière, l'ensemble de résultats créé dans le processus ne sera pas utilisé dans les requêtes ultérieures qui seront générées par l'outil client si elles sont similaires aux requêtes précédemment exécutées . Mais dans le cas où le moteur de stockage fournit le cache de données, ce cache de données particulier peut être conservé dans la mémoire afin qu'il puisse optimiser les requêtes provenant de l'outil client.

Comment cela fonctionnera-t-il ?

Disons que nous écrivons une requête à exécuter complètement par le moteur de stockage, mais avec certains aspects à calculer par le moteur de formule. Dans ce cas, le moteur de stockage renverra un cache de données au moteur de formule et ce cache de données (au cas où il s'agirait d'un simple) peut être conservé en mémoire.

Maintenant, si une requête similaire arrive quelques secondes plus tard, au lieu d'analyser à nouveau l'ensemble du modèle de données, le moteur de formule ou le moteur de stockage utilisera ce cache de données particulier afin que le temps de requête puisse être réduit et que l'expérience utilisateur puisse être amélioré.

Réduire la charge sur le moteur de formule

Encore une fois, le moteur de formule comprend les codes DAX et MDX.

Ainsi, si vous utilisez , et d'autres tâches, le moteur de formule connaît toutes les fonctions que vous utilisez dans le langage DAX et pourra tout résoudre par lui-même. Cependant, cela pourrait avoir un impact sur les performances de la requête, d'autant plus que le moteur de formule essaie de tout faire en utilisant un seul cœur.

C'est pourquoi nous devons également veiller à réduire la charge sur le moteur de formule et à augmenter la charge sur le moteur de stockage.

Un bon exemple de la différence entre le calcul dans le moteur de formule et le moteur de stockage serait l'utilisation de CROSSJOIN par rapport à .

Lorsque vous utilisez CROSSJOIN, seule une quantité limitée de données transite par le moteur de stockage. Quant au reste du calcul, tout sera effectué par le moteur de formule. En comparaison, utiliser SUMMARIZE signifie exécuter la totalité de la requête dans le moteur de stockage.

Bien sûr, cela dépendra également de la façon dont SUMMARIZE est utilisé.

Si SUMMARIZE est utilisé comme fonction la plus interne, il sera définitivement poussé vers le moteur de stockage. Mais dans certains cas, SUMMARIZE est utilisé conjointement avec un code différent qui nécessite le fonctionnement du moteur de formule. Dans ce cas, le moteur de formule interviendra et fera le travail.

Savoir où va la charge peut vous aider à optimiser les performances de votre requête, en particulier lorsque vous gardez à l'esprit la capacité et les limites des moteurs à votre disposition.

Outils qui peuvent aider à optimiser DAX pour LuckyTemplates

L'optimisation de DAX sera plus facile si vous maximisez les outils qui le rendent possible. DAX Studio est l'un de ces outils.

Prenons l'exemple précédent où le moteur de formule prend en charge toute la charge de l'exécution du calcul lorsque la fonction SUMMARIZE est utilisée. DAX Studio peut vous aider à réécrire votre code de manière à pousser SUMMARIZE dans le moteur de stockage, libérant ainsi la charge sur le moteur de formule. Cela améliore potentiellement les performances de votre modèle de données et de vos requêtes.

Bien sûr, cela devrait fonctionner de manière transparente pour les requêtes simples. Il existe également des scénarios plus compliqués.

Par exemple, vous pouvez créer des modèles composites qui utilisent deux moteurs de stockage dans le modèle de données lui-même. L'un pourrait être pour Vertipaq, tandis que l'autre serait pour DirectQuery. Dans ce cas, votre base de données doit être optimisée de manière à ce que les requêtes générées soient construites pour ce modèle de données relationnel spécifique.

Supposons que vous ayez deux tables dans votre modèle de date : la table Produits et la table Ventes. La table Products se trouve dans le stockage Vertipaq, tandis que la table Sales, étant une table plus grande, est stockée directement dans la base de données via une connexion DirectQuery.

Supposons également que vous faites glisser la colonne Brand dans la matrice, ainsi que la mesure Total Sales provenant de la table Sales dans la connexion DirectQuery.

Dans ce cas, le moteur de formule devra effectuer l'opération entre les deux moteurs.

Tout d'abord, il récupérera les colonnes Product Key et Brand de la table Products. Ensuite, il récupérera les colonnes Net Price, Quantity et Product Key de la table Sales. Une fois qu'il dispose du cache de données de Vertipaq et de DirectQuery, le moteur de formule devra prendre le cache de données et essayer de les joindre pour fournir les résultats à l'utilisateur final.


Techniques et leçons d'optimisation des requêtes DAX
Performances des requêtes et configuration de DAX Studio
Optimisation DAX : où trouver le piège DAX caché

Conclusion

Le moteur de formule joue vraiment un rôle énorme lorsque vous travaillez avec DAX. Cependant, il est essentiel de comprendre comment cela fonctionne avant de se lancer. Il est essentiel de maîtriser la manière dont le moteur de formule et le moteur de stockage fonctionnent ensemble de manière transparente, en particulier si vous souhaitez que vos requêtes DAX soient plus performantes.

En tant que moteur de niveau supérieur au sein de l'architecture des services d'analyse, le moteur de formule doit effectuer de nombreuses opérations. Mais une fois que vous avez également compris les tenants et les aboutissants du moteur de stockage, vous pouvez déterminer quelle opération pousser dans le moteur de stockage et laquelle laisser dans le moteur de formule.

Nous approfondirons le moteur de stockage dans un didacticiel séparé.

Tous mes vœux,


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