Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

I denne tutorial skal vi dække forskellen på, hvordan dataindeksering fungerer i en relationel database versus i Vertipaq.

Relationelle databaser gemmer dataene på en række for række basis. På den anden side gør Vertipaq det kolonne for kolonne.

Lad os se, hvordan disse to måder at gemme og indeksere data på kan påvirke din rapportudviklingsproces, især når du kører dine forespørgsler.

Indholdsfortegnelse

Dataindeksering pr. række

Lagring af data række for række er den traditionelle måde at gemme data på. Denne proces tager dog længere tid, hvilket vil påvirke din forespørgsels ydeevne.

Lad os sige, at vi har en tabel, der indeholder mærke, farve, køn, mængde og nettopris.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Hvis vi gemmer alt i denne tabel i en database, vil den gemme dataene i en række for række. Det er derfor, den traditionelle datalagringsstruktur også kaldes for rækkelager.

Først på samme linje gemmer den kolonneoverskrifterne i den første række - Brand, Farve, Køn, Kvantitet og Nettopris. Derefter går den videre til næste linje for at gemme de første elementer under hver kolonne - A. Datum, Azure, en blank, 1 og 103.2. Dette fortsætter række for række.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Så hvordan skal vi beregne foraf mængden ved hjælp af denne dataindekseringsmetode?

Først starter den med den første række, som indeholder kolonneoverskrifterne. Derefter hopper den ind i den næste linje og springer gennem de andre stykker data, indtil den når den første mængde, den ser, som er 1. Derefter hopper den fra linje til linje, kører gennem alle de data, hver række indeholder og samler alle mængder er fund.

Når den har afsat alle mængderne fra hver række, er det den eneste gang, beregningen er afsluttet.

Du kan sikkert forestille dig, hvor kedelig processen er, hvis du forbereder en LuckyTemplates-rapport, der bruger en DirectQuery-forbindelse til en SQL-datakilde. I dette tilfælde vil analysetjenester konvertere DAX-koden til SQL-sproget og derefter begynde at gennemgå datastrukturen række for række.

Dataindeksering pr. kolonne

For at undgå den langvarige proces, der er involveret, har du mulighed for at gemme dataene på en kolonne for kolonne basis gennem Vertipaq, når du vælger importtilstand.

Når du bruger kolonnelager i stedet for rækkelager, vil mærke, farve, køn, mængde og nettopris hver blive gemt i forskellige datastrukturer.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Lad os sige, at vi ønsker at få SUMMEN af værdierne i kolonnen Mængde. Der vil ikke være behov for at gå gennem mærket, farven og andre stykker data uden for kolonnen Antal. I en enkelt scanning læser den hele kolonnen Antal fra top til bund og opsummerer alle værdierne.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

På grund af dette vil forespørgslerne blive udført hurtigere sammenlignet med at gøre det fra venstre mod højre.

Sammenligning af eksekveringstid i simple forespørgsler

For virkelig at se den enorme forskel mellem rækkelager og kolonnelager, lad os lave nogle testforespørgsler i både SQL og Vertipaq. Udførelsestiden skal fortælle os, hvor hurtig den ene proces er i forhold til den anden.

Lad os starte med en simpel forespørgsel i SQL. Vi skal beregne SUMMEN af kolonnen Antal i tabellen Salg.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Som du kan se, er den samlede udførelsestid 2,2 sekunder.

Lad os nu gå til DAX Studio og bruge EVALUATE- funktionen til at udføre den samme forespørgsel. Vi er nødt til at slå servertimingerne til og vente på, at sporingen er fuldført.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Vi skal også sikre os, at indstillingen "Ryd cache, så kør" er valgt, når vi kører forespørgslen.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Når forespørgslen er udført, vil du se, at det kun tager 3 millisekunder at fuldføre den samme forespørgsel, som vi gjorde i SQL tidligere.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Resultatsættet bør også matche for både SQL og DAX Studio. Hvis vi lægger dem side om side, kan du se, at vi returnerer den samme værdi.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Du kan prøve at køre forespørgslen et par gange mere for at se, hvor ensartet udførelsestiden er.

Sammenligning af eksekveringstid i mere komplicerede forespørgsler

Lad os denne gang sammenligne udførelsestiden, når vi kører mere komplicerede forespørgsler.

Lad os sige, at vi ønsker at identificere SUM of Sales Quantity for hvert mærke. For at gøre dette kan vi brugeoveraf hvert produkts mærke. I den lave kontekst vil vi også oprette en ny tabel kaldet Total Quantity, hvor vi skal henfor SUMMEN af Salgsmængden.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Hvis vi kører denne kode, kan du se, at den samlede eksekveringstid er 7 millisekunder.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

I baggrunden kører denne kode faktisk to forespørgsler. Den første tager mærkekolonnen fra tabellen Produkter og udfører derefter en OUTER JOIN på produktnøglekolonnerne fra både kolonnen Salg og kolonnen Produkter.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Den anden forespørgsel henter blot mærkekolonnen fra tabellen Produkter.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Hvis jeg går til resultatskærmen, kan du se, at målingen for den samlede mængde er blevet opdelt baseret på hvert mærke.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Lad os nu gå til SQL-serveren og skrive den samme forespørgsel.

Vi skubber DaxStudio Sales-tabellen til næste linje med reference til Sales-tabellen AS S. Derefter vil vi også udføre en LEFT JOIN i DaxStudio Products-tabellen med reference til AS P, med S.Product Key lig med P. Produktnøgle. Vi vil også bruge P.Brand med SUMMEN af mængden og den samlede mængde i SELECT- sætningen. Endelig skal vi brugefor P.brand.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Når vi har kørt denne kode, får vi en tabel, der indeholder den samlede mængde adskilt af hvert mærke, hvilket er det samme, som vi tidligere fik i Vertipaq.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager

Hvad angår den samlede udførelsestid, forbliver den meget langsommere på 2,5 sekunder.

Dataindeksering i Vertipaq: Rækkelager versus kolonnelager




Konklusion

Det er tydeligt, hvor hurtigt kolonnelageret gennem Vertipaq virkelig er i forhold til rækkelageret i en SQL-database. Dette viser vigtigheden af ​​virkelig at lære den måde, dataindeksering fungerer på gennem forskellige platforme.

Det kan umiddelbart virke som et lille offer, hvis du stadig vælger at gå efter de 2,5 sekunder, som rækkebutikken kører din forespørgsel i forhold til 7 millisekunder. Men vi kører alle adskillige forespørgsler, når vi opretter vores rapporter, og alle disse udførelsestider vil lægge sammen, hvilket påvirker produktiviteten og brugeroplevelsen i det lange løb.


Hvad er Power Query & M Language: En detaljeret oversigt

Hvad er Power Query & M Language: En detaljeret oversigt

Denne vejledning giver et overblik over Power Query Editor og M-sproget inde på LuckyTemplates-skrivebordet.

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Lær, hvordan du opretter en sideinddelt rapport, tilføjer tekster og billeder og derefter eksporterer din rapport til forskellige dokumentformater.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lær, hvordan du bruger SharePoint-automatiseringsfunktionen til at skabe arbejdsgange og hjælpe dig med at mikrostyre SharePoint-brugere, -biblioteker og -lister.

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Udvid dine rapportudviklingsevner ved at deltage i en dataanalyseudfordring. Acceleratoren kan hjælpe dig med at blive LuckyTemplates-superbruger!

Løbende totaler i LuckyTemplates ved hjælp af DAX

Løbende totaler i LuckyTemplates ved hjælp af DAX

Lær, hvordan du beregner løbende totaler i LuckyTemplates ved hjælp af DAX. Løbende totaler giver dig mulighed for ikke at blive fanget af et individuelt resultat.

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

Forstå konceptet med variabler i DAX i LuckyTemplates og betydningen af ​​variabler for, hvordan dine mål beregnes.

LuckyTemplates hældningsdiagram: en oversigt

LuckyTemplates hældningsdiagram: en oversigt

Lær mere om det brugerdefinerede visuelle kaldet LuckyTemplates Slope-diagrammet, som bruges til at vise stigning/fald for en enkelt eller flere metrics.

LuckyTemplates farvetemaer til ensartede visualiseringer

LuckyTemplates farvetemaer til ensartede visualiseringer

Opdag farvetemaerne i LuckyTemplates. Disse er afgørende for, at dine rapporter og visualiseringer kan se ud og fungere problemfrit.

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af et gennemsnit i LuckyTemplates kan gøres på mange måder for at give dig præcise oplysninger til dine virksomhedsrapporter.

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

Lad os dykke ned i Standard LuckyTemplates-temaer og gennemgå nogle af de funktioner, der er indbygget i selve LuckyTemplates Desktop-applikationen.