Tecniche di compressione di LuckyTemplates in DAX Studio

Tecniche di compressione di LuckyTemplates in DAX Studio

In questa esercitazione verranno descritte le diverse tecniche di compressione di LuckyTemplates in che consentono di ottimizzare il report.

Dopo che i dati vengono caricati segmento per segmento da Analysis Services in LuckyTemplates Power Pivot e SSAS , si verificano due eventi. Il primo è che tentano di utilizzare diversi metodi di codifica per comprimere le colonne per ridurre la dimensione complessiva della RAM . Il secondo è che cercano di finanziare il miglior ordinamento che mette insieme i valori ripetuti. Questo metodo aumenta anche la compressione e, a sua volta, riduce la pressione sulla memoria.

Esistono diverse tecniche di compressione utilizzate da Analysis Services. Questa esercitazione copre tre metodi, in particolare, Codifica valore, Codifica lunghezza esecuzione e Codifica dizionario. Nell'ultima sezione di questa esercitazione verrà illustrato come eseguire l'ordinamento in Analysis Services.

Sommario

Tecnica di compressione di LuckyTemplates n. 1: codifica del valore

Il primo si chiama Value Encoding.

Value Encoding cerca una relazione matematica tra ogni valore in una colonna per ridurre la memoria. Ecco un esempio in Microsoft Excel:

Questa colonna richiede 16.384 bit per memorizzare i valori.

Tecniche di compressione di LuckyTemplates in DAX Studio

Per calcolare i bit richiesti, utilizzare prima la funzione MAX() in Excel per ottenere il valore più alto nelle colonne. In questo caso, è 9144. Quindi, utilizzare la funzione POWER() per calcolare i bit richiesti. Utilizzare l'argomento POTENZA(2, X) dove X è qualsiasi valore positivo che restituirà una risposta maggiore del valore MAX. X, in questo caso, rappresenta anche i bit richiesti. Quindi, per questo esempio, il valore di X è 14 che risulta in 16.384 . Pertanto, la colonna richiede 14 bit di archiviazione.

Per ridurre i bit richiesti utilizzando la codifica del valore, VertiPaq cerca il valore MIN nella colonna e lo sottrae da ciascun valore. In questo caso, il valore MIN nella colonna è 9003. Se lo sottrai dalla colonna, restituirà questi valori:

Tecniche di compressione di LuckyTemplates in DAX Studio

Usando le stesse funzioni e argomenti, puoi vedere che per la nuova colonna, il valore MAX è 141. E usando 8 come valore di X risulta 256 . Pertanto, la nuova colonna richiede solo 8 bit.

Puoi vedere quanto è compressa la seconda colonna rispetto alla prima.

Una volta che i dati sono stati compressi e si tenta di interrogare la nuova colonna, Storage Engine o Vertipaq esegue la scansione di questa colonna. Non restituiranno semplicemente i nuovi valori della colonna. Invece, aggiungono il valore sottratto prima di restituire il risultato all'utente.

Tuttavia, Value Encoding funziona solo su colonne contenenti numeri interi o valori con numeri decimali fissi.

Tecnica di compressione di LuckyTemplates n. 2: codifica della lunghezza dell'esecuzione

Il secondo metodo di codifica si chiama Run Length Encoding.

Run Length Encoding crea una struttura dati che contiene il valore distinto, una colonna Start e una colonna Count.

Facciamo un esempio:

Tecniche di compressione di LuckyTemplates in DAX Studio

In questo caso, identifica che nella prima riga è disponibile un valore Rosso . Quindi scopre che il valore Nero inizia dalla seconda riga ed è disponibile per le successive quattro celle. Procede al terzo valore, Blue , che inizia dalla sesta riga ed è disponibile per le tre righe successive. E questo va avanti finché non raggiunge l'ultimo valore nella colonna.

Quindi, invece di memorizzare l'intera colonna, crea una struttura dati che contiene solo informazioni su dove inizia e dove finisce un particolare valore e quanti duplicati ha.

Tecniche di compressione di LuckyTemplates in DAX Studio

Per le colonne con la stessa struttura, i dati possono essere ulteriormente compressi disponendo i valori in ordine crescente o decrescente.

Tecniche di compressione di LuckyTemplates in DAX Studio

Con questa colonna correttamente ordinata, puoi vedere che il metodo Run Length Encoding ora restituisce una struttura di dati con una riga in meno.

Tecniche di compressione di LuckyTemplates in DAX Studio

Pertanto, se hai a che fare con molti valori distinti, è consigliabile ordinare la colonna nel modo più ottimale possibile. Questo ti darà una struttura dati con meno righe che a sua volta occupa meno RAM.

La codifica della lunghezza di esecuzione non può essere applicata alle chiavi primarie perché le colonne della chiave primaria contengono solo valori univoci. Quindi, invece di memorizzare una riga per ogni valore, memorizzerà la colonna così com'è.

Tecnica di compressione di LuckyTemplates n. 3: codifica del dizionario

Il terzo metodo di codifica si chiama Dictionary Encoding.

Dictionary Encoding crea una struttura simile a un dizionario che contiene il valore distinto di una colonna. Assegna anche un indice a quel valore univoco.

Utilizzando l'esempio precedente, diamo un'occhiata a come funziona Dictionary Encoding. In questo caso, ai valori Red, Black e Blue viene assegnato rispettivamente un indice di 0, 1 e 2.

Tecniche di compressione di LuckyTemplates in DAX Studio

Quindi crea una struttura dati simile a quella di Run Length Encoding. Tuttavia, invece di memorizzare i valori effettivi, Dictionary Encoding memorizza l'indice assegnato di ciascun valore.

Tecniche di compressione di LuckyTemplates in DAX Studio

Ciò riduce ulteriormente la RAM consumata perché i numeri occupano meno spazio rispetto ai valori stringa.

La codifica del dizionario rende anche indipendente il tipo di dati tabulari. Cioè, indipendentemente dal fatto che tu abbia una colonna che può essere archiviata in diversi tipi di dati, non avrà importanza poiché la struttura dei dati memorizzerà solo il valore dell'indice.

Tuttavia, anche se è indipendente, il tipo di dati avrà comunque un effetto sulla dimensione del dizionario. A seconda del tipo di dati in cui scegli di salvare la colonna, la dimensione del dizionario (o della struttura dei dati) fluttuerà. Ma la dimensione della colonna stessa rimarrà la stessa.

Quindi, a seconda del tipo di dati che sceglierai, una volta applicata la codifica del dizionario alla colonna, la codifica della lunghezza di esecuzione può essere applicata in seguito.

In questo caso, Analysis Services creerà due strutture di dati. Prima creerà un dizionario e quindi applicherà Run Length Encoding su di esso per aumentare ulteriormente la compressione della colonna.

Ordinamento in Analysis Services

Per l'ultima parte di questa esercitazione, discuteremo in che modo Analysis Services decide il modo più ottimale per ordinare i dati.

Ad esempio, esaminiamo una colonna contenente i valori Rosso, Blu, Nero, Verde e Rosa. A loro sono stati assegnati anche i numeri da 1 a 5. Questo funge da dizionario della nostra rubrica.

Tecniche di compressione di LuckyTemplates in DAX Studio

Ora riempi un'intera colonna in Excel con questi valori. Utilizzare questo argomento per generare una colonna contenente questi valori in modo casuale.

Tecniche di compressione di LuckyTemplates in DAX Studio

Trascina la formula fino all'ultima riga. Fare clic su OK se viene visualizzata la finestra a comparsa Large Operation . Questo è ora come sarà:

Tecniche di compressione di LuckyTemplates in DAX Studio

Successivamente, copia l'intera colonna e incollala come Value .

Tecniche di compressione di LuckyTemplates in DAX Studio

Ora se vai all'opzione File nel tuo documento Excel e fai clic su Informazioni , puoi vedere che la colonna consuma 14,1 MB .

Per ridurre la quantità di RAM consumata, puoi ordinare la colonna dalla A alla Z. Se controlli nuovamente la dimensione, puoi vedere che è stata ridotta a 12,5 MB .

La riduzione di 1,9 MB potrebbe non sembrare molto. Questo perché l'esempio ha utilizzato una singola colonna in Excel per dimostrare. Excel è limitato a 1 milione di righe. Tuttavia, in LuckyTemplates i tuoi dati possono contenere miliardi di righe e colonne. La riduzione dello spazio utilizzato cresce in modo esponenziale.

Conclusione

Dopo che i dati sono stati ordinati nel modo più ottimale, Analysis Services applica una delle tre tecniche di compressione a seconda del tipo di dati.

In questo modo aumenta la compressione dei dati che riduce notevolmente la quantità di memoria consumata nel dispositivo. Ciò rende il report più ottimale, semplificandone l'esecuzione e il caricamento.


Power Automate si applica a ogni azione nei flussi di lavoro

Power Automate si applica a ogni azione nei flussi di lavoro

Scopri l

Tecniche di modellazione dei dati per organizzare le misure DAX

Tecniche di modellazione dei dati per organizzare le misure DAX

Tecniche di modellazione dei dati per organizzare meglio le misure DAX per un flusso di lavoro più efficiente.

Filtro Power Apps: cosè e come si usa?

Filtro Power Apps: cosè e come si usa?

Scopri come utilizzare la funzione di filtro in Power Apps e come incorporarla nelle formule esistenti all

Come commentare più righe in Python: una guida semplice e veloce

Come commentare più righe in Python: una guida semplice e veloce

Come commentare più righe in Python: una guida semplice e veloce

Connettori Power Automate: numero, testo e data e ora

Connettori Power Automate: numero, testo e data e ora

Acquisisci familiarità con i connettori Power Automate per la manipolazione di numeri, testo e date/ore.

Budget Vs Actual Vs Last Year - Suggerimenti per la rendicontazione finanziaria

Budget Vs Actual Vs Last Year - Suggerimenti per la rendicontazione finanziaria

Ora, è molto facile studiare il budget rispetto all

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo articolo tratta anche come importare oggetti da R a LuckyTemplates.

Che cosè Power Query e M Language: una panoramica dettagliata

Che cosè Power Query e M Language: una panoramica dettagliata

Scopri tutto su Power Query e il linguaggio M per la trasformazione e la preparazione dei dati nel desktop di LuckyTemplates.

Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.