LuckyTemplates komprimeringsteknikker i DAX Studio

I dette selvstudie lærer du om de forskellige LuckyTemplates-komprimeringsteknikker, der hjælper med at optimere din rapport.

Efter data er indlæst segment for segment af analysetjenesterne i LuckyTemplates Power Pivot og , opstår der to hændelser. Den første er, at de forsøger at bruge forskellige kodningsmetoder til . Den anden er, at de forsøger at finansiere den bedste sorteringsrækkefølge, der placerer gentagne værdier sammen. Denne metode øger også kompressionen og reducerer igen presset på hukommelsen.

Der er forskellige komprimeringsteknikker, der bruges af Analysis Services. Denne vejledning dækker tre metoder, især, nemlig værdikodning, kørselslængdekodning og ordbogskodning. I det sidste afsnit af denne øvelse vil det dække, hvordan man sorterer rækkefølge i Analysis Services.

Indholdsfortegnelse

LuckyTemplates komprimeringsteknik #1: Værdikodning

Den første kaldes Value Encoding.

Værdikodning søger efter et matematisk forhold mellem hver værdi i en kolonne for at reducere hukommelsen. Her er et eksempel i Microsoft Excel:

Denne kolonne kræver 16.384 bit for at gemme værdierne.

LuckyTemplates komprimeringsteknikker i DAX Studio

For at beregne de nødvendige bits skal du først bruge MAX()-funktionen i Excel for at få den højeste værdi i kolonnerne. I dette tilfælde er det 9144. Brug derefter POWER()-funktionen til at beregne de nødvendige bits. Brug argumentet POWER(2, X), hvor X er en positiv værdi, der vil returnere et svar, der er større end MAX-værdien. X repræsenterer i dette tilfælde også de nødvendige bits. Så for dette eksempel er værdien af ​​X 14, hvilket resulterer i 16.384 . Derfor kræver kolonnen 14 bits lagring.

For at reducere de nødvendige bits ved hjælp af værdikodning søger VertiPaq MIN-værdien i kolonnen og trækker den fra hver værdi. I dette tilfælde er MIN-værdien i kolonnen 9003. Hvis du trækker denne fra kolonnen, returnerer den disse værdier:

LuckyTemplates komprimeringsteknikker i DAX Studio

Ved at bruge de samme funktioner og argumenter kan du se, at for den nye kolonne er MAX-værdien 141. Og at bruge 8 som værdien af ​​X resulterer i 256 . Derfor kræver den nye kolonne kun 8 bit.

Du kan se, hvor komprimeret den anden er i forhold til den første kolonne.

Når dataene er komprimeret, og du prøver at forespørge på den nye kolonne, scanner den denne kolonne. De vil ikke blot returnere de nye værdier i kolonnen. I stedet tilføjer de den fratrukne værdi, før de returnerer resultatet tilbage til brugeren.

Værdikodning virker dog kun på kolonner, der indeholder heltal eller værdier med faste decimaltal.

LuckyTemplates komprimeringsteknik #2: Run Length Encoding

Den anden indkodningsmetode kaldes Run Length Encoding.

Run Length Encoding opretter en datastruktur, der indeholder den distinkte værdi, en Start-kolonne og en Count-kolonne.

Lad os tage et eksempel:

LuckyTemplates komprimeringsteknikker i DAX Studio

I dette tilfælde identificerer den, at én rød værdi er tilgængelig i den første række. Den finder derefter ud af, at den sorte værdi starter i anden række og er tilgængelig for de næste fire celler. Den fortsætter til den tredje værdi, Blue , som starter ved den sjette række og er tilgængelig for de næste tre rækker. Og dette fortsætter, indtil den når den sidste værdi i kolonnen.

Så i stedet for at gemme hele kolonnen, opretter den en datastruktur, der kun indeholder information om, hvor en bestemt værdi starter og hvor den slutter, og hvor mange dubletter den har.

LuckyTemplates komprimeringsteknikker i DAX Studio

For kolonner med samme struktur kan data komprimeres yderligere ved at arrangere værdierne i enten stigende eller faldende rækkefølge.

LuckyTemplates komprimeringsteknikker i DAX Studio

Med denne korrekt sorterede kolonne kan du se, at metoden Run Length Encoding nu returnerer en datastruktur med en række mindre.

LuckyTemplates komprimeringsteknikker i DAX Studio

Så hvis du har med mange forskellige værdier at gøre, anbefales det at sortere kolonnen på den mest optimale måde som muligt. Dette vil give dig en datastruktur med færre rækker, som igen optager mindre RAM.

Run Length Encoding kan ikke anvendes på primærnøgler, fordi primærnøglekolonner kun indeholder unikke værdier. Så i stedet for at gemme en række for hver værdi, gemmer den kolonnen, som den er.

LuckyTemplates komprimeringsteknik #3: Ordbogskodning

Den tredje indkodningsmetode kaldes Dictionary Encoding.

Ordbogskodning skaber en ordbogslignende struktur, der indeholder den særskilte værdi af en kolonne. Det tildeler også et indeks til den unikke værdi.

Ved at bruge det foregående eksempel, lad os se på, hvordan ordbogskodning fungerer. I dette tilfælde tildeles værdierne Rød, Sort og Blå et indeks på henholdsvis 0, 1 og 2.

LuckyTemplates komprimeringsteknikker i DAX Studio

Det opretter derefter en datastruktur, der ligner den for Run Length Encoding. Men i stedet for at gemme de faktiske værdier, gemmer Dictionary Encoding det tildelte indeks for hver værdi.

LuckyTemplates komprimeringsteknikker i DAX Studio

Dette reducerer den forbrugte RAM yderligere, fordi tal fylder mindre end strengværdier.

Ordbogskodning gør også den tabelformede datatype uafhængig. Det vil sige, at uanset om du har en kolonne, der kan gemmes i forskellige datatyper, vil det ikke være ligegyldigt, da datastrukturen kun vil gemme indeksværdien.

Men selvom den er uafhængig, vil datatypen stadig have en effekt på ordbogens størrelse. Afhængigt af den datatype, du vælger at gemme kolonnen i, vil størrelsen på ordbogen (eller datastrukturen) svinge. Men størrelsen på selve søjlen forbliver den samme.

Så afhængigt af hvilken datatype du vælger, kan Run Length Encoding, når ordbogskodning er anvendt på kolonnen, anvendes efterfølgende.

I dette tilfælde vil Analysis Services oprette to datastrukturer. Det vil først oprette en ordbog og derefter anvende Run Length Encoding på den for yderligere at øge komprimeringen af ​​kolonnen.

Sorteringsrækkefølge i analysetjenester

Til den sidste del af denne øvelse, lad os diskutere, hvordan Analysis Services beslutter sig for den mest optimale måde at sortere data på.

Lad os som et eksempel se på en kolonne, der indeholder røde, blå, sorte, grønne og lyserøde værdier. Tallene 1 til 5 er også blevet tildelt dem. Dette fungerer som ordbogen for vores klumme.

LuckyTemplates komprimeringsteknikker i DAX Studio

Udfyld nu en hel kolonne i Excel med disse værdier. Brug dette argument til at generere en kolonne, der indeholder disse værdier tilfældigt.

LuckyTemplates komprimeringsteknikker i DAX Studio

Træk formlen op til den sidste række. Klik på OK , hvis pop op-vinduet Large Operation vises. Sådan kommer det nu til at se ud:

LuckyTemplates komprimeringsteknikker i DAX Studio

Kopier derefter hele kolonnen og indsæt den som en værdi .

LuckyTemplates komprimeringsteknikker i DAX Studio

Hvis du nu går til indstillingen Filer i dit Excel-dokument og klikker på Info , kan du se, at kolonnen bruger 14,1 MB .

For at reducere mængden af ​​forbrugt RAM kan du sortere kolonnen fra A til Z. Hvis du tjekker størrelsen igen, kan du se, at den er blevet reduceret til 12,5 MB .

Reduktionen på 1,9 MB virker måske ikke meget. Dette skyldes, at eksemplet brugte en enkelt kolonne i Excel til at demonstrere. Excel er kun begrænset til 1 million rækker. Men i LuckyTemplates kan dine data indeholde milliarder af rækker og kolonner. Reduktionen af ​​pladsforbrug vokser eksponentielt.

Konklusion

Når dine data er sorteret på den mest optimale måde, anvender Analysis Services en af ​​de tre komprimeringsteknikker afhængigt af datatypen.

Hvis du gør det, øges komprimeringen af ​​dine data, hvilket i høj grad reducerer mængden af ​​hukommelse, der forbruges på din enhed. Dette gør din rapport mere optimal, hvilket gør den nemmere at køre og indlæse.


Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.

Udpakning af LuckyTemplates-temaer og -billeder fra PBIX

Udpakning af LuckyTemplates-temaer og -billeder fra PBIX

Lær, hvordan du adskiller en PBIX-fil for at udtrække LuckyTemplates-temaer og -billeder fra baggrunden og bruge den til at oprette din rapport!

Excel Formler Snydeark: Mellemvejledning

Excel Formler Snydeark: Mellemvejledning

Excel Formler Snydeark: Mellemvejledning

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

Python i LuckyTemplates: Sådan installeres og konfigureres

Python i LuckyTemplates: Sådan installeres og konfigureres

Lær, hvordan du installerer programmeringssproget Python i LuckyTemplates, og hvordan du bruger dets værktøjer til at skrive koder og vise billeder.

Beregning af dynamiske fortjenestemargener – nem analyse af LuckyTemplates med DAX

Beregning af dynamiske fortjenestemargener – nem analyse af LuckyTemplates med DAX

Lær, hvordan du beregner dynamiske fortjenstmargener ved siden af ​​LuckyTemplates, og hvordan du kan få mere indsigt ved at grave dybere ned i resultaterne.

Sortering af datotabelkolonner i LuckyTemplates

Sortering af datotabelkolonner i LuckyTemplates

Lær, hvordan du sorterer felterne fra kolonner med udvidet datotabel korrekt. Dette er en god strategi at gøre for vanskelige felter.

Find dine topprodukter for hver region i LuckyTemplates ved hjælp af DAX

Find dine topprodukter for hver region i LuckyTemplates ved hjælp af DAX

I denne artikel gennemgår jeg, hvordan du kan finde dine topprodukter pr. region ved hjælp af DAX-beregninger i LuckyTemplates, herunder funktionerne TOPN og CALCUATE.

Junk Dimension: Hvad er det, og hvorfor det er alt andet end junk

Junk Dimension: Hvad er det, og hvorfor det er alt andet end junk

Lær, hvordan du bruger en uønsket dimension til flag med lav kardinalitet, som du ønsker at inkorporere i din datamodel på en effektiv måde.