Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
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.
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.
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.
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.
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.
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.
Dobbiamo anche assicurarci che l'opzione "Svuota cache, quindi esegui" sia selezionata quando eseguiamo la query.
Una volta eseguita la query, vedrai che sono necessari solo 3 millisecondi per completare la stessa query che abbiamo eseguito in SQL in precedenza.
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.
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.
Se eseguiamo questo codice, puoi vedere che il tempo di esecuzione totale è di 7 millisecondi.
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.
La seconda query recupera semplicemente la colonna Brand dalla tabella Products.
Se vado alla schermata dei risultati, puoi vedere che la misura della quantità totale è stata suddivisa in base a ciascun marchio.
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.
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.
Per quanto riguarda il tempo di esecuzione totale, rimane molto più lento a 2,5 secondi.
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
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
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