Moteur de stockage - Son rôle dans loptimisation des requêtes DAX dans LuckyTemplates

Dans ce didacticiel, nous allons examiner le deuxième moteur des services d'analyse : le moteur de stockage.

Nous avons discuté du moteur de niveau supérieur, le moteur de formule , dans un précédent didacticiel. Lorsque les utilisateurs comprennent le fonctionnement de ces deux moteurs, il est plus facile d'optimiser et d'améliorer les performances de vos requêtes DAX.

L'objectif principal du moteur de stockage est de travailler directement avec la base de données.

Le moteur de formule n'a pas d'accès direct à la base de données, il passe donc normalement par le moteur de stockage à cette fin.

Le moteur de stockage est disponible en deux types : le mode d'importation et DirectQuery . Vous pouvez mélanger et faire correspondre les deux types dans le même modèle de données pour créer un modèle composite.

Table des matières

Utilisation du mode d'importation dans le moteur de stockage

Parlons d'abord du mode d'importation. Ceci est également plus communément appelé Vertipaq, mais aussi appelé xVelocity ou In Memory Columnar Database.

Il y a quatre choses essentielles à comprendre sur le fonctionnement du mode d'importation.

Tout d'abord, Vertipaq crée une copie des données directement à partir de la source de données et la stocke dans la RAM au format compressé .

Deuxièmement, les données traitées en mode d'importation sont basées sur la dernière opération d'actualisation . Cela signifie que si vous avez actualisé vos données pour la dernière fois la semaine dernière, les données que vous traitez sont toujours les mêmes que celles de la semaine dernière. Ceci est particulièrement important si vous utilisez une configuration composite dans laquelle une table est en mode d'importation et l'autre table est en mode DirectQuery.

Supposons que vous ayez la table Produits, qui a été actualisée la semaine dernière, en mode d'importation. Quant à la table Sales, vous avez décidé de la faire passer par DirectQuery en raison de sa taille. Supposons également que vous créez votre rapport sur la base des deux tables dans lesquelles vous importez la colonne Marque et que vous créez une mesure Total Sales sur la même table Sales. Vous souhaitez également visualiser le montant des ventes en fonction de la marque.

Vous devez d'abord actualiser les données provenant du mode d'importation, car vous pourriez vous retrouver avec des données fraîches et mises à jour de DirectQuery et des données obsolètes de Vertipaq. Cela laissera quelques lignes vides sur votre matrice et votre visualisation.

La prochaine chose que vous devez savoir à propos de Vertipaq est que seules les opérations de base comme , , , ou sont nativement disponibles . Cela signifie que si d'autres opérations plus compliquées sont incluses dans le plan de requête, le moteur de stockage devra appeler le moteur de formule pour résoudre cette partie du code.

Enfin, le moteur de stockage est une base de données hautement optimisée en raison de la structure en colonnes de Vertipaq . Cela signifie que toutes les données sont stockées colonne par colonne et non ligne par ligne. En raison de cette structure, Vertipaq sera toujours plus rapide qu'une connexion DirectQuery même si vous créez des index dans votre modèle de données relationnel.

Utilisation de DirectQuery dans le moteur de stockage

La prochaine option que nous avons dans les services d'analyse LuckyTemplates est DirectQuery. Si vous utilisez la connexion DirectQuery, les services d'analyse agissent uniquement comme relais pour les requêtes envoyées par le moteur de formule.

Supposons que vous écriviez une requête. Le moteur de formule générera un plan de requête. Il transmettra ensuite la requête au moteur de stockage, déjà traduite dans la langue native de la base de données. La plupart du temps, ces requêtes sont en SQL.

Si la requête utilise DirectQuery, attendez-vous à ce qu'elle soit à jour en permanence. Vous n'avez pas à vous soucier de la date de la dernière actualisation des données.

Le processus d'optimisation du code DAX et du modèle de données dépendra également de la manière dont la base de données relationnelle a été créée. Si vous avez des index dans vos colonnes, alors vos requêtes seront toujours optimisées. Mais si votre base de données n'est pas optimisée en termes de création de rapports à l'aide de services d'analyse ou de LuckyTemplates, vous pourriez être confronté à quelques problèmes de performances. Soyez donc intentionnel en créant vos bases de données pour le développement de rapports.

Travailler avec des modèles composites

La troisième option consiste à créer un modèle composite afin que vous puissiez avoir une table en mode d'importation et une autre table dans DirectQuery.

Lorsque vous utilisez deux tables provenant de sources différentes, le moteur de formule enverra une requête à Vertipaq et une autre requête à la source de données DirectQuery. Dans les deux cas, les services d'analyse récupèrent également le cache de données de Vertipaq et de DirectQuery. Le moteur de formule utilisera ensuite JOIN, ou toute itération sur les deux caches de données avant de fournir les résultats à l'utilisateur final.

Supposons que vous essayez de visualiser le montant des ventes par marque de produit dans votre rapport. Le moteur de formule enverra une requête à Vertipaq, où il récupérera le produit, la marque et la clé du produit. Ensuite, à partir de DirectQuery, il essaiera de récupérer les ventes, le prix net, la quantité des ventes et la clé de produit des ventes.

Une fois qu'il a les deux caches de données basés sur la clé de produit, il rejoindra les deux caches de données et calculera le montant total des ventes. Il présentera ensuite les résultats à l'utilisateur final.

Autres points critiques concernant le moteur de stockage

Maintenant que nous avons couvert ses différents types, il y a quelques autres facteurs critiques que vous devez connaître sur le moteur de stockage pour vous aider à optimiser vos requêtes DAX.

Comme je l'ai mentionné précédemment, le moteur de stockage fournit le cache de données au moteur de formule sous la forme d'un cache de données non compressé. Lorsque vous êtes en mode import, la requête qui est renvoyée à Vertipaq dans le processus est exécutée dans un langage xmSQL.

Le langage xmSQL est quelque peu similaire à SQL mais n'est pas complètement le même. Nous allons parler de xmSWL en détail lorsque nous parlerons des plans de requête dans un autre tutoriel.

Il est également important de se rappeler que le moteur de stockage utilise tous les cœurs disponibles dans votre CPU. La possibilité d'utiliser plusieurs cœurs est avantageuse si vous avez plusieurs segments dans votre modèle de données.

Supposons que vous ayez une table dans LuckyTemplates avec 12 millions de lignes. Ce tableau sera ensuite divisé en 12 segments, car dans Power Pivot et LuckyTemplates, chaque segment correspond à 1 million de lignes. Ceci est différent des services d'analyse en général, où un segment contient 8 millions de lignes.

Donc, si j'ai six cœurs dans mon processeur, les six cœurs analyseront les six premiers des 12 segments en même temps. Une fois qu'ils auront terminé, ils passeront aux six segments suivants.

Mais si je travaille avec des services d'analyse où le segment par défaut contient 8 millions de lignes, seuls deux de mes six cœurs seront utilisés - un segment traitera 8 millions de lignes tandis que l'autre en traitera 4 millions.

Travailler sur des requêtes compliquées

Plus tôt, j'ai mentionné que le mode d'importation ne prend en charge que les opérations de base telles que MIN, MAX, SUM, COUNT et GROUPBY. Que se passe-t-il si vous travaillez sur des requêtes plus compliquées ?

Supposons que vous décidiez d'utiliser une instruction IF dans le contexte de la ligne ou une itération imbriquée telle que SUMX sur les tables Products et Sales.

Dans ce cas, le moteur de stockage ne pourra pas résoudre la requête tout seul. Il appellera ensuite le moteur de formule, qui commencera à résoudre le calcul complexe ligne par ligne à l'intérieur du moteur de stockage. Certains peuvent penser qu'il s'agit d'un scénario favorable, les deux moteurs fonctionnant ensemble, mais c'est loin d'être vrai.

Vous voyez, lorsque cela se produit, le cache de données produit par le moteur de stockage ne peut pas être mis en cache au cas où il y aurait un callbackdataID dans cette requête particulière. Ainsi, si vous actualisez le visuel, le même calcul devra être effectué à la fois par le moteur de formule et le moteur de stockage, même si vous venez d'exécuter la même requête il y a quelques secondes. Cela entraînera des retards de performances et une mauvaise expérience utilisateur.

Notez également que le moteur de stockage ne sait pas si les requêtes ont été exécutées avec DAX ou MDX. Comme nous l'avons mentionné précédemment, c'est le travail du moteur de formule de convertir les requêtes dans le bon langage avant de transmettre le plan de requête.

Enfin, le moteur de formule envoie les requêtes au moteur de stockage une par une. Cela signifie qu'il est vraiment préférable d'avoir plusieurs segments afin de réduire le temps de numérisation global dans Vertipaq, plusieurs segments étant numérisés en même temps.


DAX pour LuckyTemplates : Optimisation à l'aide de moteurs de formule dans DAX Studio
Techniques et leçons d'optimisation des requêtes DAX
Performances des requêtes et configuration de DAX Studio

Conclusion

Comprendre les tenants et les aboutissants du moteur de stockage aide vraiment à optimiser vos requêtes DAX, surtout si vous utilisez DAX Studio. Si vous avez également suivi le didacticiel expliquant le moteur de formule, vous pouvez prendre de meilleures décisions sur la façon de créer des requêtes plus performantes.

Bien que le moteur de formule serve de moteur de niveau supérieur, il ne fait aucun doute qu'il ne peut pas fonctionner aussi bien qu'il le peut si nous ne maximisons pas les deux moteurs.

Tous mes vœux,


Gestion des erreurs dans Power Automate via le branchement parallèle

Gestion des erreurs dans Power Automate via le branchement parallèle

Découvrez l

Comparaison de tables dans Power Query | Tutoriel LuckyTemplates

Comparaison de tables dans Power Query | Tutoriel LuckyTemplates

Découvrez comment comparer facilement des tables dans Power Query pour signaler les différences et optimiser vos analyses de données.

Colonne fractionnée LuckyTemplates par délimiteurs dans DAX

Colonne fractionnée LuckyTemplates par délimiteurs dans DAX

Dans ce blog, vous découvrirez comment diviser les colonnes dans LuckyTemplates par délimiteurs à l'aide de DAX, une méthode efficace pour gérer des modèles de données complexes.

SELECTEDVALUE DAX Exemple - Sélection de trancheuse de récolte

SELECTEDVALUE DAX Exemple - Sélection de trancheuse de récolte

Découvrez comment récolter une valeur avec SELECTEDVALUE DAX pour des calculs dynamiques dans LuckyTemplates.

Calculer la marge en pourcentage dans LuckyTemplates à laide de DAX

Calculer la marge en pourcentage dans LuckyTemplates à laide de DAX

Calculez la marge en pourcentage à l

Modifier les formats de date à laide de léditeur Power Query

Modifier les formats de date à laide de léditeur Power Query

Dans ce didacticiel, nous allons explorer une méthode rapide pour convertir du texte en formats de date à l

Enregistrer la pièce jointe dun e-mail sur SharePoint avec Power Automate

Enregistrer la pièce jointe dun e-mail sur SharePoint avec Power Automate

Dans ce blog, vous apprendrez à enregistrer automatiquement la pièce jointe d

Comment adapter les cellules Excel au texte : 4 solutions simples

Comment adapter les cellules Excel au texte : 4 solutions simples

Découvrez comment adapter les cellules Excel au texte avec ces 4 solutions simples pour améliorer la présentation de vos données.

Générateur de rapports SSRS : formater les en-têtes dans un rapport paginé

Générateur de rapports SSRS : formater les en-têtes dans un rapport paginé

Dans ce didacticiel SSRS Report Builder, découvrez comment utiliser le générateur d

Thème de couleur dans les rapports LuckyTemplates - Conseils et techniques

Thème de couleur dans les rapports LuckyTemplates - Conseils et techniques

Découvrez les outils pour créer un thème de couleur efficace pour vos rapports LuckyTemplates et améliorer leur apparence.