LuckyTemplates komprimeringstekniker i DAX Studio

I den här självstudien kommer du att lära dig om de olika LuckyTemplates-komprimeringsteknikerna som hjälper dig att optimera din rapport.

Efter att data har laddats segment för segment av analystjänsterna i LuckyTemplates Power Pivot och inträffar två händelser. Den första är att de försöker använda olika kodningsmetoder för att . Den andra är att de försöker finansiera den bästa sorteringsordningen som placerar återkommande värden tillsammans. Denna metod ökar också komprimeringen och minskar i sin tur trycket på minnet.

Det finns olika komprimeringstekniker som används av Analysis Services. Denna handledning täcker tre metoder, särskilt, nämligen värdekodning, körlängdskodning och ordbokskodning. I det sista avsnittet av denna handledning kommer det att täcka hur man sorterar ordning fungerar i Analysis Services.

Innehållsförteckning

LuckyTemplates komprimeringsteknik #1: Värdekodning

Den första heter Value Encoding.

Värdekodning söker efter ett matematiskt förhållande mellan varje värde i en kolumn för att minska minnet. Här är ett exempel i Microsoft Excel:

Denna kolumn kräver 16 384 bitar för att lagra värdena.

LuckyTemplates komprimeringstekniker i DAX Studio

För att beräkna de bitar som krävs, använd först funktionen MAX() i Excel för att få det högsta värdet i kolumnerna. I det här fallet är det 9144. Använd sedan POWER()-funktionen för att beräkna de bitar som krävs. Använd argumentet POWER(2, X) där X är ett positivt värde som returnerar ett svar som är större än MAX-värdet. X, i detta fall, representerar också de bitar som krävs. Så för det här exemplet är värdet på X 14 vilket resulterar i 16 384 . Därför kräver kolumnen 14 bitars lagring.

För att minska de nödvändiga bitarna med värdekodning söker VertiPaq upp MIN-värdet i kolumnen och subtraherar det från varje värde. I det här fallet är MIN-värdet i kolumnen 9003. Om du subtraherar detta från kolumnen returnerar det dessa värden:

LuckyTemplates komprimeringstekniker i DAX Studio

Med samma funktioner och argument kan du se att för den nya kolumnen är MAX-värdet 141. Och att använda 8 som värdet på X resulterar i 256 . Därför kräver den nya kolumnen bara 8 bitar.

Du kan se hur komprimerad den andra är jämfört med den första kolumnen.

När data är komprimerade och du försöker fråga den nya kolumnen, skannar den denna kolumn. De kommer inte bara att returnera de nya värdena i kolumnen. Istället lägger de till det subtraherade värdet innan resultatet returneras till användaren.

Men värdekodning fungerar bara på kolumner som innehåller heltal eller värden med fasta decimaltal.

LuckyTemplates komprimeringsteknik #2: Run Length Encoding

Den andra kodningsmetoden kallas Run Length Encoding.

Run Length Encoding skapar en datastruktur som innehåller det distinkta värdet, en startkolumn och en Count-kolumn.

Låt oss ta ett exempel:

LuckyTemplates komprimeringstekniker i DAX Studio

I det här fallet identifierar den att ett rött värde är tillgängligt i den första raden. Den får då reda på att svartvärdet börjar på andra raden och är tillgängligt för de kommande fyra cellerna. Det fortsätter till det tredje värdet, Blue , som börjar på den sjätte raden och är tillgängligt för de kommande tre raderna. Och detta fortsätter tills det når det sista värdet i kolumnen.

Så istället för att lagra hela kolumnen skapar den en datastruktur som bara innehåller information om var ett visst värde börjar och var det slutar, och hur många dubbletter det har.

LuckyTemplates komprimeringstekniker i DAX Studio

För kolumner med samma struktur kan data komprimeras ytterligare genom att ordna värdena i antingen stigande eller fallande ordning.

LuckyTemplates komprimeringstekniker i DAX Studio

Med denna korrekt sorterade kolumn kan du se att Run Length Encoding-metoden nu returnerar en datastruktur med en rad mindre.

LuckyTemplates komprimeringstekniker i DAX Studio

Så om du har att göra med många distinkta värden, rekommenderas det att sortera kolumnen på ett så optimalt sätt som möjligt. Detta kommer att ge dig en datastruktur med mindre rader som i sin tur upptar mindre RAM.

Run Length Encoding kan inte tillämpas på primärnycklar eftersom primärnyckelkolumner bara innehåller unika värden. Så istället för att lagra en rad för varje värde, kommer den att lagra kolumnen som den är.

LuckyTemplates komprimeringsteknik #3: Ordbokskodning

Den tredje kodningsmetoden kallas Dictionary Encoding.

Dictionary Encoding skapar en ordboksliknande struktur som innehåller det distinkta värdet för en kolumn. Den tilldelar också ett index till det unika värdet.

Med hjälp av föregående exempel, låt oss titta på hur ordbokskodning fungerar. I detta fall tilldelas värdena Röd, Svart och Blå ett index på 0, 1 respektive 2.

LuckyTemplates komprimeringstekniker i DAX Studio

Den skapar sedan en datastruktur som liknar den för Run Length Encoding. Men istället för att lagra de faktiska värdena, lagrar Dictionary Encoding det tilldelade indexet för varje värde.

LuckyTemplates komprimeringstekniker i DAX Studio

Detta minskar RAM-minnet ytterligare eftersom siffror tar upp mindre utrymme än strängvärden.

Dictionary Encoding gör också tabelldatatypen oberoende. Det vill säga, oavsett om du har en kolumn som kan lagras i olika datatyper så spelar det ingen roll eftersom datastrukturen bara kommer att lagra indexvärdet.

Men även om den är oberoende kommer datatypen fortfarande att påverka storleken på ordboken. Beroende på vilken datatyp du väljer att spara kolumnen i, kommer storleken på ordboken (eller datastrukturen) att variera. Men storleken på själva kolumnen kommer att förbli densamma.

Så beroende på vilken datatyp du väljer, när Dictionary Encoding har tillämpats på kolumnen, kan Run Length Encoding tillämpas efteråt.

I det här fallet kommer Analysis Services att skapa två datastrukturer. Det kommer först att skapa en ordbok och sedan tillämpa Run Length Encoding på den för att ytterligare öka komprimeringen av kolumnen.

Sorteringsordning i Analystjänster

För den sista delen av denna handledning, låt oss diskutera hur Analysis Services beslutar om det mest optimala sättet att sortera data.

Som ett exempel, låt oss titta på en kolumn som innehåller röda, blå, svarta, gröna och rosa värden. Siffrorna 1 till 5 har också tilldelats dem. Detta fungerar som ordboken för vår kolumn.

LuckyTemplates komprimeringstekniker i DAX Studio

Fyll nu en hel kolumn i Excel med dessa värden. Använd detta argument för att skapa en kolumn som innehåller dessa värden slumpmässigt.

LuckyTemplates komprimeringstekniker i DAX Studio

Dra formeln upp till sista raden. Klicka på OK om popup-fönstret Large Operation visas. Så här kommer det att se ut nu:

LuckyTemplates komprimeringstekniker i DAX Studio

Kopiera sedan hela kolumnen och klistra in den som ett värde .

LuckyTemplates komprimeringstekniker i DAX Studio

Om du nu går till alternativet Arkiv i ditt Excel-dokument och klickar på Info kan du se att kolumnen förbrukar 14,1 MB .

För att minska mängden RAM som förbrukas kan du sortera kolumnen från A till Ö. Om du kontrollerar storleken igen kan du se att den har minskat till 12,5 MB .

Reduktionen på 1,9 MB kanske inte verkar mycket. Detta beror på att exemplet använde en enda kolumn i Excel för att demonstrera. Excel är endast begränsat till 1 miljon rader. Men i LuckyTemplates kan din data innehålla miljarder rader och kolumner. Minskningen av utrymme som används växer exponentiellt.

Slutsats

När din data är sorterad på det mest optimala sättet, tillämpar Analysis Services någon av de tre komprimeringsteknikerna beroende på datatyp.

Om du gör det ökar komprimeringen av dina data, vilket avsevärt minskar mängden minne som förbrukas i din enhet. Detta gör din rapport mer optimal vilket gör det lättare att köra och ladda.


LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.

Extrahera LuckyTemplates-teman och bilder från PBIX

Extrahera LuckyTemplates-teman och bilder från PBIX

Lär dig hur du tar isär en PBIX-fil för att extrahera LuckyTemplates-teman och bilder från bakgrunden och använda den för att skapa din rapport!

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det