Wat is zelf in Python: voorbeelden uit de echte wereld
Wat is zelf in Python: voorbeelden uit de echte wereld
In deze zelfstudie leert u over de verschillende LuckyTemplates-compressietechnieken in waarmee u uw rapport kunt optimaliseren.
Nadat gegevens segment voor segment zijn geladen door de Analysis Services in LuckyTemplates Power Pivot en SSAS , vinden er twee gebeurtenissen plaats. De eerste is dat ze verschillende coderingsmethoden proberen te gebruiken om kolommen te comprimeren om de algehele RAM-grootte te verkleinen . De tweede is dat ze proberen de beste sorteervolgorde te financieren die herhalende waarden bij elkaar plaatst. Deze methode verhoogt ook de compressie en vermindert op zijn beurt de druk op het geheugen.
Er worden verschillende compressietechnieken gebruikt door Analysis Services. Deze tutorial behandelt drie methoden, met name Value Encoding, Run Length Encoding en Dictionary Encoding. In het laatste gedeelte van deze zelfstudie wordt besproken hoe sorteervolgorde werkt in Analysis Services.
Inhoudsopgave
LuckyTemplates-compressietechniek nr. 1: waardecodering
De eerste heet Value Encoding.
Waardecodering zoekt naar een wiskundige relatie tussen elke waarde in een kolom om geheugen te besparen. Hier is een voorbeeld in Microsoft Excel:
Deze kolom heeft 16.384 bits nodig om de waarden op te slaan.
Om de vereiste bits te berekenen, gebruikt u eerst de functie MAX() in Excel om de hoogste waarde in de kolommen te krijgen. In dit geval is dat 9144. Gebruik vervolgens de functie POWER() om de benodigde bits te berekenen. Gebruik het argument MACHT(2, X) waarbij X een positieve waarde is die een antwoord oplevert dat groter is dan de MAX-waarde. X vertegenwoordigt in dit geval ook de benodigde bits. Dus voor dit voorbeeld is de waarde van X 14, wat resulteert in 16.384 . Daarom heeft de kolom 14 bits opslagruimte nodig.
Om de vereiste bits te verminderen met behulp van Value Encoding, zoekt VertiPaq de MIN-waarde in de kolom op en trekt deze af van elke waarde. In dit geval is de MIN-waarde in de kolom 9003. Als u dit aftrekt van de kolom, worden deze waarden geretourneerd:
Met dezelfde functies en argumenten kunt u zien dat voor de nieuwe kolom de MAX-waarde 141 is. En als u 8 gebruikt als de waarde van X, resulteert dit in 256 . Daarom heeft de nieuwe kolom slechts 8 bits nodig.
U kunt zien hoe gecomprimeerd de tweede is in vergelijking met de eerste kolom.
Zodra de gegevens zijn gecomprimeerd en u probeert de nieuwe kolom op te vragen, scant de Storage Engine of Vertipaq deze kolom. Ze zullen niet zomaar de nieuwe waarden van de kolom retourneren. In plaats daarvan voegen ze de afgetrokken waarde toe voordat ze het resultaat teruggeven aan de gebruiker.
Waardecodering werkt echter alleen op kolommen met gehele getallen of waarden met vaste decimale getallen.
LuckyTemplates-compressietechniek nr. 2: codering van runlengte
De tweede coderingsmethode wordt Run Length-codering genoemd.
Run Length Encoding creëert een datastructuur die de unieke waarde, een Start-kolom en een Count-kolom bevat.
Laten we een voorbeeld nemen:
In dit geval geeft het aan dat er één rode waarde beschikbaar is in de eerste rij. Het komt er dan achter dat de Black- waarde begint op de tweede rij en beschikbaar is voor de volgende vier cellen. Het gaat verder naar de derde waarde, Blauw , die begint bij de zesde rij en beschikbaar is voor de volgende drie rijen. En dit gaat door totdat het de laatste waarde in de kolom bereikt.
Dus in plaats van de hele kolom op te slaan, creëert het een gegevensstructuur die alleen informatie bevat over waar een bepaalde waarde begint en eindigt, en hoeveel duplicaten het heeft.
Voor kolommen met dezelfde structuur kunnen gegevens verder worden gecomprimeerd door de waarden in oplopende of aflopende volgorde te rangschikken.
Met deze correct gesorteerde kolom kunt u zien dat de methode Run Length Encoding nu een gegevensstructuur met één rij minder retourneert.
Dus als je te maken hebt met veel verschillende waarden, is het aan te raden om de kolom zo optimaal mogelijk te sorteren. Dit geeft u een gegevensstructuur met minder rijen die op hun beurt minder RAM in beslag nemen.
Run Length-codering kan niet worden toegepast op primaire sleutels omdat primaire-sleutelkolommen alleen unieke waarden bevatten. Dus in plaats van één rij voor elke waarde op te slaan, wordt de kolom opgeslagen zoals deze is.
LuckyTemplates-compressietechniek #3: Woordenboekcodering
De derde coderingsmethode wordt Dictionary Encoding genoemd.
Woordenboekcodering creëert een woordenboekachtige structuur die de afzonderlijke waarde van een kolom bevat. Het wijst ook een index toe aan die unieke waarde.
Laten we aan de hand van het vorige voorbeeld eens kijken hoe Dictionary Encoding werkt. In dit geval krijgen de waarden Rood, Zwart en Blauw een index van respectievelijk 0, 1 en 2.
Vervolgens wordt een gegevensstructuur gemaakt die vergelijkbaar is met die van Run Length Encoding. In plaats van de werkelijke waarden op te slaan, slaat Dictionary Encoding echter de toegewezen index van elke waarde op.
Dit vermindert het RAM-verbruik verder omdat getallen minder ruimte innemen dan tekenreekswaarden.
Dictionary Encoding maakt het gegevenstype in tabelvorm ook onafhankelijk. Dat wil zeggen, ongeacht of u een kolom heeft die in verschillende gegevenstypen kan worden opgeslagen, het maakt niet uit, aangezien de gegevensstructuur alleen de indexwaarde opslaat.
Maar zelfs als het onafhankelijk is, heeft het gegevenstype nog steeds invloed op de grootte van het woordenboek. Afhankelijk van het gegevenstype dat u kiest om de kolom in op te slaan, zal de grootte van het woordenboek (of de gegevensstructuur) fluctueren. Maar de grootte van de kolom zelf blijft hetzelfde.
Dus afhankelijk van het gegevenstype dat u kiest, kan Run Length-codering achteraf worden toegepast zodra Dictionary Encoding op de kolom is toegepast.
In dit geval maakt Analysis Services twee gegevensstructuren. Het zal eerst een woordenboek maken en daarop Run Length Encoding toepassen om de compressie van de kolom verder te verhogen.
Sorteervolgorde in analyseservices
Laten we voor het laatste deel van deze zelfstudie bespreken hoe Analysis Services de meest optimale manier kiest om gegevens te sorteren.
Laten we als voorbeeld eens kijken naar een kolom met waarden voor Rood, Blauw, Zwart, Groen en Roze. Ook de nummers 1 t/m 5 zijn aan hen toegekend. Dit fungeert als het woordenboek van onze column.
Vul nu een hele kolom in Excel met deze waarden. Gebruik dit argument om een kolom te genereren die deze waarden willekeurig bevat.
Sleep de formule naar de laatste rij. Klik op OK als het pop-upvenster Grote bewerking verschijnt. Dit is hoe het er nu uit gaat zien:
Kopieer vervolgens de hele kolom en plak deze als een Waarde .
Als u nu naar de optie Bestand in uw Excel-document gaat en op Info klikt , ziet u dat de kolom 14,1 MB verbruikt .
Om de hoeveelheid verbruikt RAM te verminderen, kunt u de kolom sorteren van A tot Z. Als u de grootte nogmaals controleert, kunt u zien dat deze is teruggebracht tot 12,5 MB .
De vermindering van 1,9 MB lijkt misschien niet veel. Dit komt omdat het voorbeeld een enkele kolom in Excel gebruikte om te demonstreren. Excel is slechts beperkt tot 1 miljoen rijen. In LuckyTemplates kunnen uw gegevens echter miljarden rijen en kolommen bevatten. De vermindering van de gebruikte ruimte groeit exponentieel.
Conclusie
Zodra uw gegevens op de meest optimale manier zijn gesorteerd, past Analysis Services een van de drie compressietechnieken toe, afhankelijk van het gegevenstype.
Als u dit doet, wordt de compressie van uw gegevens verhoogd, waardoor de hoeveelheid geheugen die op uw apparaat wordt verbruikt, aanzienlijk wordt verminderd. Dit maakt uw rapport optimaler waardoor het gemakkelijker wordt om uit te voeren en te laden.
Wat is zelf in Python: voorbeelden uit de echte wereld
Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.
In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.
Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.
In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.
Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.
Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.
Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.
Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.
Wat is LuckyTemplates Gateway? Alles wat u moet weten