Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Dans ce didacticiel, nous allons couvrir la différence de fonctionnement de l'indexation des données dans une base de données relationnelle par rapport à Vertipaq.

Les bases de données relationnelles stockent les données ligne par ligne. En revanche, Vertipaq le fait colonne par colonne.

Voyons comment ces deux méthodes de stockage et d'indexation des données peuvent avoir un impact sur votre processus de développement de rapports, en particulier lors de l'exécution de vos requêtes.

Table des matières

Indexation des données par ligne

Le stockage des données ligne par ligne est la méthode traditionnelle de stockage des données. Cependant, ce processus prend plus de temps, ce qui aura un impact sur les performances de votre requête.

Supposons que nous ayons un tableau contenant la marque, la couleur, le sexe, la quantité et le prix net.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Si nous stockons tout dans cette table dans une base de données, elle stockera les données ligne par ligne. C'est pourquoi la structure de stockage de données traditionnelle est également appelée magasin de lignes.

Tout d'abord, dans la même ligne, il stockera les en-têtes de colonne trouvés sur la première ligne - Marque, Couleur, Sexe, Quantité et Prix net. Ensuite, il passe à la ligne suivante pour stocker les premiers éléments sous chaque colonne - A. Datum, Azure, un blanc, 1 et 103.2. Cela continue ligne par ligne.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Alors, comment allons-nous calculer la de la quantité en utilisant cette méthode d'indexation des données ?

Tout d'abord, il commence par la première ligne, qui contient les en-têtes de colonne. Ensuite, il saute à la ligne suivante et saute les autres données jusqu'à ce qu'il arrive à la première quantité qu'il voit, qui est 1. Ensuite, il saute de ligne en ligne, parcourant toutes les données que chaque ligne contient et rassemble toutes les quantités est trouve.

Une fois qu'il a mis de côté toutes les quantités de chaque ligne, c'est la seule fois où le calcul est terminé.

Vous pouvez probablement imaginer à quel point le processus est fastidieux si vous préparez un rapport LuckyTemplates qui utilise une connexion DirectQuery à une source de données SQL. Dans ce cas, les services d'analyse vont convertir le code DAX en langage SQL, puis commencer à parcourir la structure de données ligne par ligne.

Indexation des données par colonne

Pour éviter le long processus impliqué, vous avez la possibilité de stocker les données colonne par colonne via Vertipaq lorsque vous choisissez le mode d'importation.

Lorsque vous utilisez le magasin de colonnes au lieu du magasin de lignes, la marque, la couleur, le sexe, la quantité et le prix net seront chacun stockés dans des structures de données différentes.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Disons que nous voulons obtenir la SOMME des valeurs dans la colonne Quantité. Il ne sera pas nécessaire de passer par la marque, la couleur et d'autres éléments de données en dehors de la colonne Quantité. En un seul balayage, il lit toute la colonne Quantité de haut en bas et résume toutes les valeurs.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Pour cette raison, les requêtes seront exécutées plus rapidement par rapport à le faire de gauche à droite.

Comparaison du temps d'exécution dans les requêtes simples

Pour vraiment voir l'énorme différence entre le magasin de lignes et le magasin de colonnes, faisons quelques requêtes de test dans SQL et Vertipaq. Le temps d'exécution devrait nous dire à quelle vitesse un processus est comparé à l'autre.

Commençons par une simple requête en SQL. Nous allons calculer la SOMME de la colonne Quantité dans la table Ventes.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Comme vous pouvez le voir, le temps d'exécution total est de 2,2 secondes.

Passons maintenant à DAX Studio et utilisons la fonction EVALUATE pour exécuter la même requête. Nous devons activer les horaires du serveur et attendre la fin de la trace.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Nous devons également nous assurer que l'option "Effacer le cache puis exécuter" est sélectionnée lorsque nous exécutons la requête.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Une fois la requête exécutée, vous verrez qu'il ne faut que 3 millisecondes pour terminer la même requête que nous avons faite en SQL plus tôt.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

L'ensemble de résultats doit également correspondre pour SQL et DAX Studio. Si nous les mettons côte à côte, vous pouvez voir que nous renvoyons la même valeur.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Vous pouvez essayer d'exécuter la requête plusieurs fois pour voir à quel point le temps d'exécution est cohérent.

Comparaison du temps d'exécution dans des requêtes plus complexes

Cette fois, comparons le temps d'exécution lorsque nous exécutons des requêtes plus complexes.

Disons que nous voulons identifier la SOMME de la quantité de ventes pour chaque marque. Pour ce faire, nous pouvons utiliser sur les de la marque de chaque produit. Dans le contexte bas, nous allons également créer une nouvelle table appelée Quantité totale dans laquelle nous allons la SOMME de la quantité des ventes.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Si nous exécutons ce code, vous pouvez voir que le temps d'exécution total est de 7 millisecondes.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

En arrière-plan, ce code exécute en fait deux requêtes. Le premier prend la colonne Brand de la table Products, puis exécute une OUTER JOIN sur les colonnes Product Key de la colonne Sales et de la colonne Products.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

La deuxième requête récupère simplement la colonne Marque de la table Produits.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Si je vais à l'écran des résultats, vous pouvez voir que la mesure de la quantité totale a été divisée en fonction de chaque marque.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Passons maintenant au serveur SQL et écrivons la même requête.

Nous allons pousser la table DaxStudio Sales à la ligne suivante, en référençant la table Sales AS S. Ensuite, nous allons également exécuter un LEFT JOIN dans la table DaxStudio Products référencée AS P, avec la S.Product Key égale à la P. Clé de produit. Nous allons également utiliser P.Brand avec la somme de la quantité et de la quantité totale dans l' instruction SELECT . Enfin, nous allons utiliser pour P.brand.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Une fois que nous aurons exécuté ce code, nous obtiendrons un tableau contenant la quantité totale séparée par chaque marque, ce qui est la même chose que nous avions précédemment dans Vertipaq.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes

Quant au temps d'exécution total, il reste beaucoup plus lent à 2,5 secondes.

Indexation des données dans Vertipaq : magasin de lignes contre magasin de colonnes


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

Il est évident à quel point le stockage de colonnes via Vertipaq est vraiment rapide par rapport au stockage de lignes dans une base de données SQL. Cela montre l'importance de bien connaître le fonctionnement de l'indexation des données sur différentes plateformes.

Cela peut sembler un petit sacrifice au début si vous choisissez toujours d'aller pendant les 2,5 secondes pendant lesquelles le magasin de lignes exécute votre requête contre 7 millisecondes. Mais nous exécutons tous plusieurs requêtes lorsque nous créons nos rapports et tous ces temps d'exécution s'additionnent, ce qui a un impact sur la productivité et l'expérience utilisateur à long terme.


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