Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

In questo tutorial, tratteremo la differenza su come funziona l'indicizzazione dei dati in un database relazionale rispetto a Vertipaq.

I database relazionali memorizzano i dati riga per riga. D'altra parte, Vertipaq lo fa colonna per colonna.

Vediamo in che modo questi due modi di archiviare e indicizzare i dati potrebbero influire sul processo di sviluppo dei report, in particolare durante l'esecuzione delle query.

Sommario

Indicizzazione dei dati per riga

Memorizzare i dati riga per riga è il modo tradizionale di memorizzare i dati. Tuttavia, questo processo richiede più tempo, il che influirà sulle prestazioni della tua query.

Diciamo di avere una tabella che contiene il Brand, il Colore, il Sesso, la Quantità e il Prezzo Netto.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Se memorizziamo tutto in questa tabella in un database, allora memorizzerà i dati riga per riga. Ecco perché la tradizionale struttura di archiviazione dei dati è anche chiamata archivio di righe.

Innanzitutto, nella stessa riga, memorizzerà le intestazioni di colonna trovate nella prima riga: marca, colore, sesso, quantità e prezzo netto. Quindi passa alla riga successiva per memorizzare i primi elementi sotto ogni colonna: A. Datum, Azure, uno spazio vuoto, 1 e 103.2. Questo continua riga per riga.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Quindi, come faremo a calcolare la della quantità usando questo metodo di indicizzazione dei dati?

Innanzitutto, inizia con la prima riga, che contiene le intestazioni di colonna. Quindi, passa alla riga successiva e salta attraverso gli altri pezzi di dati finché non arriva alla prima quantità che vede, che è 1. Quindi salta da una riga all'altra, scorrendo tutti i dati contenuti in ogni riga e raccogliendo tutti i le quantità si trovano.

Una volta che ha messo da parte tutte le quantità di ogni riga, è l'unico momento in cui il calcolo è completato.

Probabilmente puoi immaginare quanto sia noioso il processo se stai preparando un report LuckyTemplates che utilizza una connessione DirectQuery a un'origine dati SQL. In questo caso, i servizi di analisi convertono il codice DAX nel linguaggio SQL, quindi iniziano a esaminare la struttura dei dati riga per riga.

Indicizzazione dei dati per colonna

Per evitare il lungo processo coinvolto, hai la possibilità di archiviare i dati colonna per colonna tramite Vertipaq quando scegli la modalità di importazione.

Quando si utilizza l'archivio colonne anziché l'archivio righe, il marchio, il colore, il sesso, la quantità e il prezzo netto verranno archiviati ciascuno in strutture di dati diverse.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Supponiamo di voler ottenere la SOMMA dei valori nella colonna Quantità. Non sarà necessario passare attraverso Brand, Colore e altri dati al di fuori della colonna Quantità. In un'unica scansione, legge l'intera colonna Quantità dall'alto verso il basso e riassume tutti i valori.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Per questo motivo, le query verranno eseguite più rapidamente rispetto all'esecuzione da sinistra a destra.

Confronto del tempo di esecuzione in query semplici

Per vedere davvero l'enorme differenza tra l'archivio di righe e l'archivio di colonne, eseguiamo alcune query di prova sia in SQL che in Vertipaq. Il tempo di esecuzione dovrebbe dirci quanto è veloce un processo rispetto all'altro.

Iniziamo con una semplice query in SQL. Calcoleremo la SOMMA della colonna Quantità nella tabella Vendite.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Come puoi vedere, il tempo totale di esecuzione è di 2,2 secondi.

Passiamo ora a DAX Studio e usiamo la funzione EVALUATE per eseguire la stessa query. Dobbiamo attivare i tempi del server e attendere il completamento della traccia.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Dobbiamo anche assicurarci che l'opzione "Svuota cache, quindi esegui" sia selezionata quando eseguiamo la query.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Una volta eseguita la query, vedrai che sono necessari solo 3 millisecondi per completare la stessa query che abbiamo eseguito in SQL in precedenza.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Il set di risultati deve corrispondere anche per SQL e DAX Studio. Se li mettiamo uno accanto all'altro, puoi vedere che stiamo restituendo lo stesso valore.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Puoi provare a eseguire la query più volte per vedere quanto è coerente il tempo di esecuzione.

Confronto del tempo di esecuzione in query più complicate

Questa volta, confrontiamo il tempo di esecuzione quando eseguiamo query più complicate.

Supponiamo di voler identificare la SOMMA delle Quantità Vendite per ogni marca. Per fare questo, possiamo usare sopra i della marca di ogni prodotto. Nel contesto basso, creeremo anche una nuova tabella chiamata Total Quantity dove andremo a per la SOMMA della Sales Quantity.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Se eseguiamo questo codice, puoi vedere che il tempo di esecuzione totale è di 7 millisecondi.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

In background, questo codice sta effettivamente eseguendo due query. Il primo prende la colonna Brand dalla tabella Products, quindi esegue un OUTER JOIN sulle colonne Product Key sia dalla colonna Sales che dalla colonna Products.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

La seconda query recupera semplicemente la colonna Brand dalla tabella Products.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Se vado alla schermata dei risultati, puoi vedere che la misura della quantità totale è stata suddivisa in base a ciascun marchio.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Ora andiamo al server SQL e scriviamo la stessa query.

Spingeremo la tabella DaxStudio Sales alla riga successiva, facendo riferimento alla tabella Sales AS S. Poi, eseguiremo anche un LEFT JOIN nella tabella DaxStudio Products referenziata AS P, con S.Product Key uguale a P.Chiave prodotto. Useremo anche P.Brand con la SUM della quantità e la quantità totale nell'istruzione SELECT . Infine, useremo per P.brand.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Una volta eseguito questo codice, otterremo una tabella che contiene la quantità totale segregata per ogni marchio, che è la stessa cosa che avevamo precedentemente in Vertipaq.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store

Per quanto riguarda il tempo di esecuzione totale, rimane molto più lento a 2,5 secondi.

Indicizzazione dei dati in Vertipaq: Row Store Versus Column Store


DAX per LuckyTemplates: Ottimizzazione tramite motori di formule in DAX Studio
Tecniche e lezioni sull'ottimizzazione delle query DAX
Prestazioni delle query e configurazione di DAX Studio

Conclusione

È evidente quanto sia veloce l'archivio di colonne tramite Vertipaq rispetto all'archivio di righe in un database SQL. Ciò dimostra l'importanza di conoscere veramente il modo in cui funziona l'indicizzazione dei dati attraverso diverse piattaforme.

All'inizio può sembrare un piccolo sacrificio se scegli ancora di andare per i 2,5 secondi in cui l'archivio di righe esegue la tua query rispetto ai 7 millisecondi. Ma eseguiamo tutti diverse query quando creiamo i nostri report e tutti questi tempi di esecuzione si sommeranno, con un impatto sulla produttività e sull'esperienza utente a lungo termine.


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.