Ce este Sinele în Python: Exemple din lumea reală
Ce este Sinele în Python: Exemple din lumea reală
În acest tutorial, vom acoperi diferența cu privire la modul în care funcționează indexarea datelor într-o bază de date relațională față de Vertipaq.
Bazele de date relaționale stochează datele rând cu rând. Pe de altă parte, Vertipaq o face coloană cu coloană.
Să vedem cum aceste două moduri de stocare și indexare a datelor ar putea afecta procesul de dezvoltare a rapoartelor, mai ales atunci când rulați interogările.
Cuprins
Indexarea datelor pe rând
Stocarea datelor rând cu rând este modalitatea tradițională de stocare a datelor. Cu toate acestea, acest proces durează mai mult timp, ceea ce va afecta performanța interogării dvs.
Să presupunem că avem un tabel care conține marca, culoarea, sexul, cantitatea și prețul net.
Dacă stocăm totul din acest tabel într-o bază de date, atunci va stoca datele rând cu rând. De aceea, structura tradițională de stocare a datelor este numită și magazin de rânduri.
În primul rând, în aceeași linie, va stoca anteturile de coloană găsite pe primul rând - Marca, Culoare, Sex, Cantitate și Preț net. Apoi trece la următoarea linie pentru a stoca primele elemente sub fiecare coloană - A. Datum, Azure, un gol, 1 și 103.2. Aceasta continuă rând cu rând.
Deci, cum vom calcula SUMA folosind această metodă de indexare a datelor?
În primul rând, începe cu primul rând, care conține antetele coloanelor. Apoi, sare în următoarea linie și trece peste celelalte bucăți de date până când ajunge la prima cantitate pe care o vede, care este 1. Apoi sare de la linie la linie, trecând prin toate datele pe care le conține fiecare rând și adună toate cantitățile se găsesc.
Odată ce a pus deoparte toate cantitățile de pe fiecare rând, este singura dată când calculul este finalizat.
Vă puteți imagina probabil cât de obositor este procesul dacă pregătiți un raport LuckyTemplates care utilizează o conexiune DirectQuery la o sursă de date SQL. În acest caz, serviciile de analiză vor converti codul DAX în limbajul SQL, apoi vor începe să parcurgă structura datelor rând cu rând.
Indexarea datelor pe coloană
Pentru a evita procesul îndelungat implicat, aveți opțiunea de a stoca datele coloană cu coloană prin Vertipaq atunci când alegeți modul de import.
Când utilizați stocarea coloanelor în loc de stocarea rândurilor, marca, culoarea, sexul, cantitatea și prețul net vor fi fiecare stocate în structuri de date diferite.
Să presupunem că vrem să obținem SUMA valorilor din coloana Cantitate. Nu va fi nevoie să treceți prin Brand, Color și alte date din afara coloanei Cantitate. Într-o singură scanare, citește întreaga coloană Cantitate de sus în jos și însumează toate valorile.
Din acest motiv, interogările vor fi executate mai rapid decât de la stânga la dreapta.
Compararea timpului de execuție în interogări simple
Pentru a vedea cu adevărat diferența uriașă dintre depozitul de rânduri și depozitul de coloane, să facem câteva interogări de testare atât în SQL, cât și în Vertipaq. Timpul de execuție ar trebui să ne spună cât de rapid este un proces în comparație cu celălalt.
Să începem cu o interogare simplă în SQL. Vom calcula pentru SUMA coloanei Cantitate din tabelul Vânzări.
După cum puteți vedea, timpul total de execuție este de 2,2 secunde.
Acum, să mergem la DAX Studio și să folosim funcția EVALUATE pentru a executa aceeași interogare. Trebuie să pornim cronometrarea serverului și să așteptăm finalizarea urmăririi.
De asemenea, trebuie să ne asigurăm că opțiunea „Șterge cache, apoi rulează” este selectată atunci când rulăm interogarea.
Odată ce interogarea este executată, veți vedea că durează doar 3 milisecunde pentru a finaliza aceeași interogare pe care am făcut-o în SQL mai devreme.
Setul de rezultate ar trebui să se potrivească, de asemenea, atât pentru SQL, cât și pentru DAX Studio. Dacă le punem una lângă alta, puteți vedea că returnăm aceeași valoare.
Puteți încerca să rulați interogarea de câteva ori pentru a vedea cât de consistent este timpul de execuție.
Compararea timpului de execuție în interogări mai complicate
De data aceasta, să comparăm timpul de execuție atunci când executăm interogări mai complicate.
Să presupunem că vrem să identificăm SUMA cantității vânzărilor pentru fiecare marcă. Pentru a face acest lucru, putem folosi peste ale mărcii fiecărui produs. În contextul scăzut, vom crea, de asemenea, un nou tabel numit Cantitate totală, unde vom pentru SUMA cantității vânzărilor.
Dacă rulăm acest cod, puteți vedea că timpul total de execuție este de 7 milisecunde.
În fundal, acest cod rulează de fapt două interogări. Primul preia coloana Brand din tabelul Produse, apoi execută un OUTER JOIN pe coloanele Cheie de produs atât din coloana Vânzări, cât și din coloana Produse.
A doua interogare preia pur și simplu coloana Brand din tabelul Produse.
Dacă merg la ecranul cu rezultate, puteți vedea că măsura Cantității totale a fost împărțită în funcție de fiecare marcă.
Acum să mergem la serverul SQL și să scriem aceeași interogare.
Vom împinge tabelul DaxStudio Sales la următoarea linie, făcând referire la tabelul Sales AS S. Apoi, vom executa, de asemenea, un LEFT JOIN în tabelul DaxStudio Products referit AS P, cu S.Product Key egală cu P.Cheie de produs. De asemenea, vom folosi P.Brand cu SUMA cantității și cantității totale în instrucțiunea SELECT . În cele din urmă, vom folosi pentru P.brand.
Odată ce rulăm acest cod, vom obține un tabel care conține cantitatea totală separată de fiecare marcă, care este același lucru pe care l-am primit anterior în Vertipaq.
În ceea ce privește timpul total de execuție, acesta rămâne mult mai lent la 2,5 secunde.
DAX pentru LuckyTemplates: optimizarea utilizând motoarele de formule în DAX Studio
Tehnici și lecții de optimizare a interogărilor DAX
Performanța interogărilor și configurarea DAX Studio
Concluzie
Este evident cât de rapid este stocul de coloane prin Vertipaq în comparație cu depozitul de rânduri dintr-o bază de date SQL. Acest lucru arată importanța cunoașterii cu adevărat a modului în care funcționează indexarea datelor prin diferite platforme.
Poate părea un mic sacrificiu la început dacă alegeți totuși să mergeți pentru cele 2,5 secunde în care magazinul de rânduri rulează interogarea dvs., comparativ cu 7 milisecunde. Dar cu toții rulăm mai multe interogări atunci când ne creăm rapoartele și toți acești timpi de execuție se vor aduna, influențând productivitatea și experiența utilizatorului pe termen lung.
Ce este Sinele în Python: Exemple din lumea reală
Veți învăța cum să salvați și să încărcați obiecte dintr-un fișier .rds în R. Acest blog va trata, de asemenea, cum să importați obiecte din R în LuckyTemplates.
În acest tutorial despre limbajul de codare DAX, aflați cum să utilizați funcția GENERATE și cum să schimbați în mod dinamic titlul unei măsuri.
Acest tutorial va acoperi cum să utilizați tehnica Multi Threaded Dynamic Visuals pentru a crea informații din vizualizările dinamice de date din rapoartele dvs.
În acest articol, voi trece prin contextul filtrului. Contextul de filtrare este unul dintre subiectele majore despre care orice utilizator LuckyTemplates ar trebui să învețe inițial.
Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.
Aflați cum să vă calculați modificările marjei de profit folosind tehnici precum măsurarea ramificării și combinarea formulelor DAX în LuckyTemplates.
Acest tutorial va discuta despre ideile de materializare a cache-urilor de date și despre modul în care acestea afectează performanța DAX-ului în furnizarea de rezultate.
Dacă încă utilizați Excel până acum, atunci acesta este cel mai bun moment pentru a începe să utilizați LuckyTemplates pentru nevoile dvs. de raportare a afacerii.
Ce este LuckyTemplates Gateway? Tot ce trebuie să știți