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.


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

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 blog tratterà anche come importare oggetti da R a LuckyTemplates.

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.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere