Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

I denne opplæringen skal vi dekke forskjellen på hvordan dataindeksering fungerer i en relasjonsdatabase versus i Vertipaq.

Relasjonsdatabaser lagrer dataene på rad for rad basis. På den annen side gjør Vertipaq det kolonne for kolonne.

La oss se hvordan disse to måtene å lagre og indeksere data på kan påvirke rapportutviklingsprosessen, spesielt når du kjører søkene dine.

Innholdsfortegnelse

Dataindeksering per rad

Lagring av data rad for rad er den tradisjonelle måten å lagre data på. Denne prosessen tar imidlertid mer tid, noe som vil påvirke søkets ytelse.

La oss si at vi har en tabell som inneholder merkevare, farge, kjønn, kvantitet og nettopris.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Hvis vi lagrer alt i denne tabellen i en database, vil den lagre dataene i en rad for rad. Det er derfor den tradisjonelle datalagringsstrukturen også kalles radlager.

Først, på samme linje, vil den lagre kolonneoverskriftene på den første raden - Merke, Farge, Kjønn, Kvantitet og Nettopris. Deretter går den videre til neste linje for å lagre de første elementene under hver kolonne - A. Datum, Azure, en blank, 1 og 103.2. Dette fortsetter rad for rad.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Så hvordan skal vi beregne forav mengden som bruker denne dataindekseringsmetoden?

Først starter den med den første raden, som inneholder kolonneoverskriftene. Deretter hopper den inn i neste linje og hopper gjennom de andre dataene til den kommer til den første mengden den ser, som er 1. Deretter hopper den fra linje til linje, går gjennom alle dataene hver rad inneholder og samler alle mengder er funn.

Når den har satt til side alle mengdene fra hver rad, er det den eneste gangen beregningen er fullført.

Du kan sikkert forestille deg hvor kjedelig prosessen er hvis du utarbeider en LuckyTemplates-rapport som bruker en DirectQuery-tilkobling til en SQL-datakilde. I dette tilfellet vil analysetjenester konvertere DAX-koden til SQL-språket, og deretter begynne å gå gjennom datastrukturen rad for rad.

Dataindeksering per kolonne

For å unngå den langvarige prosessen som er involvert, har du muligheten til å lagre dataene på en kolonne for kolonne gjennom Vertipaq når du velger importmodus.

Når du bruker kolonnelager i stedet for radlager, vil merkevare, farge, kjønn, kvantitet og nettopris hver lagres i forskjellige datastrukturer.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

La oss si at vi ønsker å få SUMMEN av verdiene i kolonnen Antall. Det vil ikke være behov for å gå gjennom merkevare, farge og andre deler av data utenfor Antall-kolonnen. I en enkelt skanning leser den hele kolonnen Antall fra topp til bunn og summerer opp alle verdiene.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

På grunn av dette vil spørringene bli utført raskere sammenlignet med å gjøre det fra venstre mot høyre.

Sammenligning av utførelsestid i enkle spørringer

For å virkelig se den enorme forskjellen mellom radlager og kolonnelager, la oss gjøre noen testspørringer i både SQL og Vertipaq. Utførelsestiden skal fortelle oss hvor rask en prosess er sammenlignet med den andre.

La oss starte med en enkel spørring i SQL. Vi skal beregne SUMMEN for Antall-kolonnen i Salg-tabellen.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Som du kan se, er den totale utførelsestiden 2,2 sekunder.

La oss nå gå til DAX Studio og bruke EVALUATE- funksjonen til å utføre den samme spørringen. Vi må slå på servertimingene og vente på at sporingen skal fullføres.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Vi må også sørge for at alternativet "Tøm buffer og kjør" er valgt når vi kjører spørringen.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Når spørringen er utført, vil du se at det bare tar 3 millisekunder å fullføre den samme spørringen vi gjorde i SQL tidligere.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Resultatsettet skal også samsvare for både SQL og DAX Studio. Hvis vi legger dem side om side, kan du se at vi returnerer samme verdi.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Du kan prøve å kjøre spørringen et par ganger til for å se hvor konsistent utførelsestiden er.

Sammenligning av utførelsestid i mer kompliserte spørringer

Denne gangen, la oss sammenligne utførelsestiden når vi kjører mer kompliserte spørringer.

La oss si at vi ønsker å identifisere SUM of Sales Quantity for hvert merke. For å gjøre dette kan vi brukeoverav hvert produkts merke. I den lave konteksten vil vi også lage en ny tabell kalt Totalt kvantitet der vi skalfor SUMMEN av salgsmengden.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Hvis vi kjører denne koden, kan du se at den totale utførelsestiden er 7 millisekunder.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

I bakgrunnen kjører denne koden faktisk to spørringer. Den første tar merkekolonnen fra produkttabellen, og kjører deretter en YTRE JOIN på produktnøkkel-kolonnene fra både Salg-kolonnen og Produkter-kolonnen.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Den andre spørringen henter ganske enkelt merkekolonnen fra produkttabellen.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Hvis jeg går til resultatskjermen, kan du se at totalmengdemålet er delt opp basert på hvert merke.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

La oss nå gå til SQL-serveren og skrive den samme spørringen.

Vi skyver DaxStudio Sales-tabellen til neste linje, og refererer til Sales-tabellen AS S. Deretter skal vi også utføre en LEFT JOIN i DaxStudio Products-tabellen referert til AS P, med S.Product Key lik P. Produktnøkkel. Vi kommer også til å bruke P.Brand med SUMMEN av Quantity og Total Quantity i SELECT -setningen. Til slutt skal vi brukefor P.brand.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Når vi kjører denne koden, får vi en tabell som inneholder den totale mengden adskilt av hvert merke, som er det samme som vi tidligere fikk i Vertipaq.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk

Når det gjelder den totale utførelsestiden, forblir den mye tregere på 2,5 sekunder.

Dataindeksering i Vertipaq: radbutikk versus kolonnebutikk




Konklusjon

Det er tydelig hvor raskt kolonnelageret gjennom Vertipaq egentlig er i forhold til radlageret i en SQL-database. Dette viser viktigheten av å virkelig bli kjent med hvordan dataindeksering fungerer gjennom ulike plattformer.

Det kan virke som et lite offer i begynnelsen hvis du fortsatt velger å gå for de 2,5 sekundene radbutikken kjører søket ditt sammenlignet med 7 millisekunder. Men vi kjører alle flere søk når vi lager rapportene våre, og alle disse utførelsestidene vil legge seg opp, og påvirke produktiviteten og brukeropplevelsen i det lange løp.


Variabler og uttrykk i Power Query Editor

Variabler og uttrykk i Power Query Editor

Denne opplæringen vil diskutere om variabler og uttrykk i Power Query Editor. Du lærer hvordan du skriver og bygger dem riktig.

Hvordan lage et Lucky Templates-varmekart

Hvordan lage et Lucky Templates-varmekart

Et LuckyTemplates-varmekart er en type visualisering som brukes til å vise datatetthet på et kart. I denne opplæringen vil jeg diskutere hvordan vi kan lage en – ikke gå glipp av noe!

Opprette et Pareto-diagram i LuckyTemplates – Avansert DAX

Opprette et Pareto-diagram i LuckyTemplates – Avansert DAX

Jeg skal lære deg et veldig interessant eksempel rundt Pareto-prinsippet og hvordan du lager et Pareto-diagram ved hjelp av viktige DAX-formler.

Egendefinert stolpediagram i LuckyTemplates: varianter og modifikasjoner

Egendefinert stolpediagram i LuckyTemplates: varianter og modifikasjoner

Lær hvordan et tilpasset stolpediagram på markedsplassen kan brukes til datasammenligning og hvordan du kan lage dem ved å bruke eksempler i LuckyTemplates.

Kraftautomatisering av statiske resultater: En oversikt

Kraftautomatisering av statiske resultater: En oversikt

Lær hvordan Power Automate Static Results-funksjonen fungerer og hvorfor det er bra å bli lagt til de beste praksisene når du lager flytdiagrammer.

LuckyTemplates Python-opplæring: Hvordan oversette tekster

LuckyTemplates Python-opplæring: Hvordan oversette tekster

eDNA demonstrerer hvordan du utfører språk- eller tekstoversettelse ved hjelp av Python og overfører det til LuckyTemplates. LuckyTemplates Python-opplæring.

Lag et Gantt-diagram i LuckyTemplates Report Builder

Lag et Gantt-diagram i LuckyTemplates Report Builder

I denne opplæringen lærer du hvordan du bruker Gauge Bullet Graph til å lage et Gantt-diagram i LuckyTemplates Report Builder.

Lag 3D-spredningsplott ved å bruke Python i LuckyTemplates

Lag 3D-spredningsplott ved å bruke Python i LuckyTemplates

I denne opplæringen lærer du hvordan du lager et tredimensjonalt (3D) spredningsplott ved å bruke Python i LuckyTemplates.

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet