{"id":55144,"date":"2020-01-13T00:00:00","date_gmt":"2020-01-12T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/tableau-v-roznitse-realno"},"modified":"2020-02-18T14:03:13","modified_gmt":"2020-02-18T11:03:13","slug":"tableau-v-roznitse-realno","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/tableau-v-roznitse-realno","title":{"rendered":"Tableau \u00een retail, este posibil?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Timpul raport\u0103rilor \u00een Excel trece rapid \u2014 tendin\u021ba de a utiliza instrumente convenabile pentru prezentarea \u0219i analiza informa\u021biilor este vizibil\u0103 \u00een toate domeniile. Am discutat de mult timp despre digitalizarea gener\u0103rii rapoartelor \u0219i am ales sistemul de vizualizare \u0219i analiz\u0103 self-service Tableau. Alexander Bezugly, \u0219eful departamentului de solu\u021bii analitice \u0219i raportare al Grupului \u201eM.Video-Eldorado\u201d, a povestit despre experien\u021ba \u0219i rezultatele construirii unui tablou de bord opera\u021bional.<\/b><\/p>\n<p>Voi spune din start, nu tot ce a fost planificat a reu\u0219it s\u0103 fie realizat, dar experien\u021ba a fost interesant\u0103 \u0219i sper c\u0103 va fi util\u0103 \u0219i pentru voi. Iar dac\u0103 cineva are idei despre cum ar fi putut fi f\u0103cut mai bine, voi fi foarte recunosc\u0103tor pentru sfaturi \u0219i idei.<\/p>\n<p><img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/81c41899e9b3acf1858a4faa627c121b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSub titlu, despre ce ne-am confruntat \u0219i despre ce am \u00eenv\u0103\u021bat.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>De unde am \u00eenceput<\/h4>\n<p>\n\u00cen \u201eM.Video-Eldorado\u201d exist\u0103 un model de date bine elaborat: informa\u021bie structurat\u0103 cu ad\u00e2ncimea necesar\u0103 de stocare \u0219i o cantitate enorm\u0103 de rapoarte de form\u0103 fix\u0103 (vezi mai multe detalii <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mvideo\/blog\/462015\/\">acest articol<\/a><\/noindex>). Din acestea, anali\u0219tii fac fie tabele pivotante sau buletine informative formatate \u00een Excel, fie prezent\u0103ri atr\u0103g\u0103toare \u00een PowerPoint pentru utilizatorii finali.<\/p>\n<p>Aproximativ acum doi ani, \u00een loc de rapoarte de form\u0103 fix\u0103, am \u00eenceput s\u0103 cre\u0103m rapoarte analitice \u00een SAP Analysis (un addon pentru Excel, \u00een esen\u021b\u0103 \u2014 un tabel pivotat pe un motor OLAP). Dar acest instrument nu a reu\u0219it s\u0103 satisfac\u0103 nevoile tuturor utilizatorilor, majoritatea continu\u00e2nd s\u0103 utilizeze informa\u021bia suplimentar procesat\u0103 de anali\u0219ti.<\/p>\n<p>Utilizatorii no\u0219tri finali se \u00eempart \u00een trei categorii:<\/p>\n<p><b>Top management<\/b>. Solicita\u021bi informa\u021bii \u00eentr-o form\u0103 bine prezentat\u0103 \u0219i u\u0219or de \u00een\u021beles.<\/p>\n<p><b>Middle management<\/b>, utilizatori avansa\u021bi. Sunt interesa\u021bi de explorarea datelor \u0219i capabili s\u0103 genereze singuri rapoarte c\u00e2nd au instrumentele necesare. Ei au devenit utilizatorii cheie ai rapoartelor analitice din SAP Analysis.<\/p>\n<p><b>Utilizatori de mas\u0103<\/b>. Nu sunt interesa\u021bi de analiza independent\u0103 a datelor, folosesc rapoarte cu un grad limitat de libertate, \u00een form\u0103 de buletine informative \u0219i tabele pivotante \u00een Excel.<\/p>\n<p>Ideea noastr\u0103 a fost s\u0103 acoperim nevoile tuturor utilizatorilor \u0219i s\u0103 le oferim un instrument unic \u0219i convenabil. Am decis s\u0103 \u00eencepem cu managementul de v\u00e2rf. Ace\u0219tia aveau nevoie de panouri u\u0219or de utilizat pentru analiza principalelor rezultate de afaceri. Astfel, am \u00eenceput cu Tableau \u0219i, pentru \u00eenceput, am ales dou\u0103 direc\u021bii: indicatori de v\u00e2nz\u0103ri \u00een retail \u0219i online, cu o ad\u00e2ncime \u0219i o l\u0103\u021bime de analiz\u0103 limitate, care s\u0103 acopere aproximativ 80% din datele solicitate de top management.<\/p>\n<p>Av\u00e2nd \u00een vedere c\u0103 utilizatorii tablourilor de bord erau managementul de v\u00e2rf, a ap\u0103rut un alt KPI suplimentar al produsului \u2013 viteza de r\u0103spuns. Nimeni nu va a\u0219tepta 20-30 de secunde pentru ca datele s\u0103 se actualizeze. Navigarea trebuia s\u0103 dureze \u00een 4-5 secunde sau, mai bine, s\u0103 fie instantanee. \u0218i din p\u0103cate, nu am reu\u0219it s\u0103 atingem acest obiectiv.<\/p>\n<p>A\u0219a ar\u0103ta schi\u021ba tabloului nostru principal de bord:<\/p>\n<p><img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/a7a028feee6542dfbc1fd3c2feeaa3de.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIdeea cheie este s\u0103 reunim principalii conduc\u0103tori KPI, care \u00een final au fost 19, pe partea st\u00e2ng\u0103 \u0219i s\u0103 le prezent\u0103m dinamica \u0219i segmentarea pe principalele atribute pe partea dreapt\u0103. Sarcina pare simpl\u0103, vizualizarea este logic\u0103 \u0219i u\u0219or de \u00een\u021beles, p\u00e2n\u0103 nu te ad\u00e2nce\u0219ti \u00een detalii.<\/p>\n<h2>Detaliul 1. Volumul de date<\/h2>\n<p>\nTabelul principal cu v\u00e2nz\u0103rile pe un an are aproximativ 300 de milioane de r\u00e2nduri. Deoarece este necesar s\u0103 reflect\u0103m \u0219i dinamica din anul trecut \u0219i din anul precedent, volumul de date doar pentru v\u00e2nz\u0103rile efective este de aproximativ 1 miliard de r\u00e2nduri. De asemenea, sunt stocate separat informa\u021biile privind datele planificate \u0219i blocul de v\u00e2nz\u0103ri online. A\u0219adar, chiar dac\u0103 am folosit DB in-memory SAP HANA, viteza de execu\u021bie a unei interog\u0103ri pentru selectarea tuturor indicatorilor pentru o s\u0103pt\u0103m\u00e2n\u0103 din depozitele curente a fost de aproximativ 15-20 de secunde. Solu\u021bia acestei probleme se iese de la sine \u2013 materializarea suplimentar\u0103 a datelor. Dar \u0219i \u00een cazul acesta exist\u0103 capcane, despre care vom discuta mai jos.<\/p>\n<h2>Detaliul 2. Indicatori neaditivi<\/h2>\n<p>\nMul\u021bi dintre KPI-urile noastre depind de num\u0103rul de bonuri. Acest indicator reprezint\u0103 COUNT DISTINCT al num\u0103rului de r\u00e2nduri (anteturi de bonuri) \u0219i arat\u0103 sume diferite \u00een func\u021bie de atributele selectate. De exemplu, cum ar trebui s\u0103 fie calculat acest indicator \u0219i derivatul s\u0103u:<\/p>\n<p><img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/0a6d676f0a5c2b779a5e7892b1f54929.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPentru a asigura corectitudinea calculelor, se poate:<\/p>\n<ul>\n<li>Efectua calcule asem\u0103n\u0103toare \u00een timp real \u00een depozit;\n<\/li>\n<li>Efectua calcule pe \u00eentregul volum de date \u00een Tableau, adic\u0103, la cerere \u00een Tableau, s\u0103 se returneze toate datele conform filtrelor selectate la granularitatea posturilor bonurilor;\n<\/li>\n<li>Crearea unei prezent\u0103ri materializate, \u00een care vor fi calculate toate indicatorii pentru toate variantele de selec\u021bie, care ofer\u0103 rezultate non-aditive diferite.\n<\/li>\n<\/ul>\n<p>\nEste clar c\u0103 \u00een exemplul UTE1 \u0219i UTE2 \u2013 acestea sunt atribute ale materialului, reprezent\u00e2nd ierarhia produselor. Aceasta nu este o entitate static\u0103, prin ea se realizeaz\u0103 managementul \u00een interiorul companiei, deoarece diferite grupuri de produse sunt r\u0103spunz\u0103toare de diferi\u021bi manageri. Am avut multe revizuiri globale ale acestei ierarhii, c\u00e2nd toate nivelurile s-au schimbat, c\u00e2nd rela\u021biile au fost reevaluate, dar \u0219i modific\u0103ri punctuale constante, c\u00e2nd un grup trece dintr-un nod \u00een altul. \u00cen raportarea obi\u0219nuit\u0103, toate acestea sunt calculate \u00een timp real din atributele materialului; \u00een cazul materializ\u0103rii acestor date, este necesar\u0103 dezvoltarea unui mecanism pentru a urm\u0103ri astfel de modific\u0103ri \u0219i pentru a re\u00eenc\u0103rca datele istorice \u00een mod automat. O sarcin\u0103 destul de complex\u0103.<\/p>\n<h2>Detaliu 3. Compararea datelor <\/h2>\n<p>\nAceast\u0103 sec\u021biune este similar\u0103 cu cea anterioar\u0103. Esen\u021ba este c\u0103, \u00een cadrul companiei, la analiz\u0103, este obiceiul de a forma mai multe niveluri de comparare cu perioada anterioar\u0103:<\/p>\n<p><i>Compararea cu perioada anterioar\u0103 (zi cu zi, s\u0103pt\u0103m\u00e2n\u0103 cu s\u0103pt\u0103m\u00e2n\u0103, lun\u0103 cu lun\u0103)<\/i><\/p>\n<p>\u00cen aceast\u0103 compara\u021bie se presupune c\u0103, \u00een func\u021bie de perioada aleas\u0103 de utilizator (de exemplu, s\u0103pt\u0103m\u00e2na 33 a anului), trebuie s\u0103 ar\u0103t\u0103m dinamica fa\u021b\u0103 de s\u0103pt\u0103m\u00e2na 32; dac\u0103 am alege datele pentru o lun\u0103, de exemplu mai, aceast\u0103 compara\u021bie ar ar\u0103ta dinamica fa\u021b\u0103 de aprilie.<\/p>\n<p><i>Compararea cu anul anterior<\/i><\/p>\n<p>Aici, aspectul principal este c\u0103 atunci c\u00e2nd compari pe zile \u0219i pe s\u0103pt\u0103m\u00e2ni, nu iei aceea\u0219i zi din anul precedent, adic\u0103 nu po\u021bi s\u0103 pui pur \u0219i simplu anul curent minus unu. Trebuie s\u0103 te ui\u021bi la ziua comparat\u0103 a s\u0103pt\u0103m\u00e2nii. \u00cen schimb, c\u00e2nd compari luni, trebuie s\u0103 iei exact aceea\u0219i zi din calendar a anului trecut. De asemenea, exist\u0103 nuan\u021be cu anii bisec\u021bi. \u00cen depozitele originale, toate informa\u021biile sunt distribuite pe zile, nu exist\u0103 c\u00e2mpuri separate pentru s\u0103pt\u0103m\u00e2ni, luni, ani. Astfel, pentru a ob\u021bine un tablou analitic complet \u00een panou, trebuie s\u0103 calculezi nu o singur\u0103 perioad\u0103, de exemplu, o s\u0103pt\u0103m\u00e2n\u0103, ci 4 s\u0103pt\u0103m\u00e2ni, \u0219i apoi s\u0103 compari aceste date, s\u0103 reflectezi dinamica \u0219i abaterile. Prin urmare, aceast\u0103 logic\u0103 de formare a compara\u021biei \u00een dinamic\u0103 poate fi implementat\u0103 fie \u00een Tableau, fie pe partea vitrinei. Da, \u0219i despre aceste detalii, bine\u00een\u021beles, \u0219tim \u0219i am g\u00e2ndit \u00eenc\u0103 din etapa de proiectare, dar influen\u021ba lor asupra performan\u021bei tabloului de bord final a fost greu de prognozat.<\/p>\n<p>\u00cen implementarea tabloului de bord, am urmat un parcurs lung Agile. Sarcina noastr\u0103 a fost s\u0103 oferim c\u00e2t mai repede un instrument func\u021bional pentru testare, cu datele necesare. A\u0219adar, am mers pe sprinturi \u0219i ne-am bazat pe minimizarea muncii pe partea depozitului actual.<\/p>\n<h2>Partea 1. Credin\u021ba \u00een Tableau<\/h2>\n<p>\nPentru a simplifica suportul IT \u0219i a implementa rapid modific\u0103rile, am decis s\u0103 facem logica calculului indicatorilor neaditiv \u0219i compararea perioadelor anterioare \u00een Tableau.<\/p>\n<h3>Etapa 1. Totul \u00een Live, f\u0103r\u0103 dezvolt\u0103ri pentru vitrine.<\/h3>\n<p>\n\u00cen aceast\u0103 etap\u0103, am conectat Tableau la vitrinele actuale \u0219i am decis s\u0103 vedem cum se va calcula num\u0103rul de bonuri pentru un an.<\/p>\n<p><b>Rezultatul:<\/b><\/p>\n<p>R\u0103spunsul a fost descurajant - 20 de minute. Transferul de date pe re\u021bea, \u00eenc\u0103rcare mare pe Tableau. Am realizat c\u0103 logica cu indicatorii neaditiv trebuie s\u0103 fie implementat\u0103 \u00een HANA. Acest lucru nu ne-a speriat prea mult, deoarece aveam deja experien\u021b\u0103 similar\u0103 cu BO \u0219i Analysis \u0219i \u0219tim cum s\u0103 construim vitrine rapide \u00een HANA care ofer\u0103 indicatori neaditiv corect calcula\u021bi. Acum, doar trebuia s\u0103 le adapt\u0103m pentru Tableau.<\/p>\n<h3>Etapa 2. Ajust\u0103m vitrinele, f\u0103r\u0103 materializare, totul \u00een timp real.<\/h3>\n<p>\nAm realizat un nou panou separat, care oferea datele necesare pentru TABLEAU \u00een timp real. \u00cen general, am ob\u021binut un rezultat bun; am redus timpul de generare a tuturor indicatorilor de la o s\u0103pt\u0103m\u00e2n\u0103 la 9-10 secunde. \u0218i sincer, ne a\u0219teptam ca timpul de r\u0103spuns al dashboard-ului \u00een Tableau s\u0103 fie de 20-30 de secunde la prima deschidere \u0219i ulterior, datorit\u0103 cache-ului, \u00eentre 10 \u0219i 12 secunde, ceea ce ne-ar fi mul\u021bumit \u00een totalitate.<\/p>\n<p><b>Rezultatul:<\/b><\/p>\n<p>Timpul de deschidere a dashboard-ului: 4-5 minute<br \/>\nOrice clic: 3-4 minute<br \/>\nNimeni nu se a\u0219tepta la un astfel de supliment \u00een func\u021bionarea panoului.<\/p>\n<h2>Partea 2. Imersie \u00een Tableau<\/h2>\n<p><\/p>\n<h3>Etapa 1. Analiza performan\u021bei Tableau \u0219i ajust\u0103ri rapide<\/h3>\n<p>\nAm \u00eenceput s\u0103 analiz\u0103m pe ce cheltuie Tableau cel mai mult timp. \u0218i exist\u0103 un instrument destul de bun pentru aceasta, ceea ce este, desigur, un avantaj al Tableau. Principala problem\u0103 pe care am identificat-o a fost interog\u0103rile SQL foarte complexe pe care le construia Tableau. Acestea erau legate, \u00een special, de:<\/p>\n<p> \u2014 transpunerea datelor. Deoarece Tableau nu are instrumente pentru transpunerea dataset-urilor, pentru a construi partea st\u00e2ng\u0103 a dashboard-ului cu o prezentare detaliat\u0103 a tuturor KPI-urilor, a trebuit s\u0103 form\u0103m o tabel\u0103 folosind case. Dimensiunea interog\u0103rilor SQL \u00een baza de date a ajuns la 120.000 de caractere.<\/p>\n<p><img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/8fc4d99017ddd604bbabb5ea0a19b38d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n \u2014 alegerea perioadei de timp. O astfel de interogare la nivel de baz\u0103 de date necesita mai mult timp pentru compilare dec\u00e2t pentru execu\u021bie:<\/p>\n<p><img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/a9b9cc6ddd6b03c643935d070532728e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAdic\u0103, procesarea interog\u0103rii 12 secunde + 5 secunde execu\u021bie.<\/p>\n<p>Am decis s\u0103 simplific\u0103m logica calculului pe partea de Tableau \u0219i s\u0103 mut\u0103m o alt\u0103 parte a calculului pe panou \u0219i la nivelul bazei de date. Acest lucru a adus rezultate bune.<\/p>\n<p>Mai \u00eent\u00e2i, am efectuat transpunerea \u00een timp real, f\u0103c\u00e2nd-o prin full outer join \u00een etapa final\u0103 a calculului VIEW, conform unei astfel de abord\u0103ri descrise pe wiki. <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Transpose\">Transpose \u2014 Wikipedia, enciclopedia liber\u0103<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Elementary_matrix#Row-addition_transformations\">Elementary matrix \u2014 Wikipedia, enciclopedia liber\u0103<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/5259995831dc8ae379a34bfe84e52daa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAdic\u0103, am creat o tabel\u0103 de configurare \u2013 matricea de transpunere (21x21) \u0219i am ob\u021binut to\u021bi indicatorii \u00eentr-o defalcare pe linii.<\/p>\n<p>A fost:<br \/>\n<img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/9382ee65a1482cc137a52b5f80c39eeb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA devenit:<br \/>\n<img decoding=\"async\" alt=\"Tableau \u00een retail, este posibil?\" src=\"\/wp-content\/uploads\/2020\/01\/1d6653ec427ce0621b441943f589d860.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTranspunerea bazei de date consum\u0103 aproape f\u0103r\u0103 timp. Cererea pentru toate indicatorii pe s\u0103pt\u0103m\u00e2n\u0103 a fost procesat\u0103, \u00een continuare, \u00een aproximativ 10 secunde. \u00cens\u0103, s-a pierdut flexibilitatea \u00een ceea ce prive\u0219te construirea tabloului de bord pentru un indicator specific, adic\u0103 pentru partea dreapt\u0103 a tabloului de bord, unde este reprezentat\u0103 dinamica \u0219i detaliile unui indicator specific, vitrina a fost procesat\u0103 \u00eenainte \u00een 1-3 secunde, deoarece cererea se f\u0103cea pe un singur indicator, iar acum baza de date selec\u021bioneaz\u0103 \u00eentotdeauna to\u021bi indicatorii \u0219i filtreaz\u0103 rezultatul \u00eenainte de a-l returna \u00een Tableau.<\/p>\n<p>\u00cen consecin\u021b\u0103, viteza de lucru a tabloului de bord a sc\u0103zut aproape de 3 ori.<\/p>\n<p><b>Rezultatul:<\/b><\/p>\n<ol>\n<li>5 sec \u2014 parsarea tabloului de bord, vizualiz\u0103ri<\/li>\n<li> 15-20 sec \u2014 preg\u0103tirea pentru compilarea cererilor cu realizarea pre-calculelor \u00een Tableau<\/li>\n<li> 35-45 sec \u2014 compilarea cererilor SQL \u0219i executarea lor \u00een paralel-secven\u021bial \u00een Hana<\/li>\n<li> 5 sec \u2014 procesarea rezultatelor, sortarea, recalcularea vizualiz\u0103rilor \u00een Tableau<\/li>\n<li>Desigur, astfel de rezultate nu erau acceptabile pentru afacere, a\u0219a c\u0103 am continuat optimizarea.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Etapa 2. Minim de logic\u0103 \u00een Tableau, materializare complet\u0103<\/h3>\n<p>\nNe-am dat seama c\u0103 este imposibil s\u0103 construim un tablou de bord cu un timp de r\u0103spuns de c\u00e2teva secunde pe o vitrin\u0103 care func\u021bioneaz\u0103 \u00een 10 secunde \u0219i am luat \u00een considerare op\u021biuni de materializare a datelor pe partea de baz\u0103 de date exact pentru tabloul de bord solicitat. Dar ne-am confruntat cu o problem\u0103 global\u0103, descris\u0103 mai sus \u2013 indicatori neadi\u021bionali. Nu am reu\u0219it s\u0103 facem ca, la schimbarea filtrelor sau desf\u0103\u0219ur\u0103rilor, Tableau s\u0103 comute flexibil \u00eentre diferite vitrine \u0219i niveluri, pre-calculate pentru diferite ierarhii de produse (\u00een exemplu, cele trei cereri f\u0103r\u0103 UTE, cu UTE1 \u0219i UTE2 formeaz\u0103 rezultate diferite). Prin urmare, am luat decizia de a simplifica tabloul de bord, de a renun\u021ba la ierarhia de produse \u00een tablou \u0219i de a vedea c\u00e2t de rapid poate fi \u00eentr-o versiune simplificat\u0103.<\/p>\n<p>A\u0219adar, \u00een aceast\u0103 ultim\u0103 etap\u0103, am adunat un depozit separat, \u00een care am stocat, \u00een form\u0103 transpus\u0103, toate KPI-urile. Pe partea de baz\u0103 de date, orice cerere c\u0103tre un astfel de depozit este procesat\u0103 \u00een 0,1 \u2013 0,3 secunde. \u00cen tabloul de bord am ob\u021binut urm\u0103toarele rezultate:<\/p>\n<p>Prima deschidere: 8-10 secunde<br \/>\nFiecare clic: 6-7 secunde<\/p>\n<p>Timpul pe care \u00eel folose\u0219te Tableau este format din:<\/p>\n<ol>\n<li>0,3 sec. \u2014 parsarea tabloului de bord \u0219i compilarea cererilor SQL\n<\/li>\n<li>1,5-3 sec. \u2014 executarea cererilor SQL \u00een Hana pentru vizualiz\u0103rile principale (se lanseaz\u0103 \u00een paralel cu pct. 1)\n<\/li>\n<li>1,5-2 sec. \u2014 renderare, recalcularea vizualiz\u0103rilor\n<\/li>\n<li>1,3 sec. \u2014 execu\u021bia interog\u0103rilor SQL suplimentare pentru ob\u021binerea valorilor relevante ale filtrului (Brand, Divizie, Ora\u0219, Magazin), parsarea rezultatelor\n<\/li>\n<\/ol>\n<p><\/p>\n<h3>Dac\u0103 ar fi s\u0103 facem un rezumat scurt<\/h3>\n<p>\nNe-a pl\u0103cut instrumentul Tableau din punctul de vedere al vizualiz\u0103rii. \u00cen etapa de proiectare am analizat diferite elemente de vizualizare \u0219i le-am g\u0103sit pe toate \u00een biblioteci, inclusiv segment\u0103ri complexe multi-nivel \u0219i grafice de tip waterfall cu multiple unit\u0103\u021bi de m\u0103sur\u0103.<\/p>\n<p>Implement\u00e2nd tablouri de bord cu indicatori cheie de v\u00e2nz\u0103ri, ne-am confruntat cu dificult\u0103\u021bi de performan\u021b\u0103 pe care nu le-am putut dep\u0103\u0219i p\u00e2n\u0103 acum. Am petrecut mai mult de dou\u0103 luni \u0219i am ob\u021binut un tablou de bord func\u021bional incomplet, al c\u0103rui timp de r\u0103spuns se afl\u0103 la limita acceptabilit\u0103\u021bii. \u0218i am tras concluziile pentru noi:<\/p>\n<ol>\n<li>Tableau nu poate gestiona volume mari de date. Dac\u0103 \u00een modelul de date surs\u0103 ave\u021bi mai mult de 10 GB de date (aproximativ 200 de milioane x 50 de r\u00e2nduri), atunci tabloul de bord devine semnificativ mai lent \u2013 de la 10 secunde la c\u00e2teva minute pentru fiecare clic. Am experimentat at\u00e2t cu live-connect, c\u00e2t \u0219i cu extragerea. Viteza de lucru este comparabil\u0103.\n<\/li>\n<li>Limit\u0103ri la utilizarea mai multor depozite (seturi de date). Nu exist\u0103 op\u021biunea standard de a specifica rela\u021biile dintre seturile de date. Dac\u0103 folosi\u021bi solu\u021bii ocolitoare pentru a lega seturile de date, acest lucru va afecta semnificativ performan\u021ba. \u00cen cazul nostru, am considerat varianta materializ\u0103rii datelor \u00een fiecare segment de prezentare necesar \u0219i pe aceste seturi de date materializate s\u0103 facem comut\u0103ri cu p\u0103strarea filtrelor selectate anterior \u2013 acest lucru s-a dovedit imposibil de realizat \u00een Tableau.\n<\/li>\n<li>\u00cen Tableau, nu este posibil s\u0103 crea\u021bi parametrii dinamici. Nu pute\u021bi completa un parametru, care este utilizat pentru filtrarea unui set de date \u00een extrac\u021bie sau la live-connect, cu rezultatul unei alte selec\u021bii din setul de date sau rezultatul unei alte interog\u0103ri SQL, doar cu input nativ al utilizatorului sau o constant\u0103.\n<\/li>\n<li>Limit\u0103ri legate de construirea tabloului de bord cu elemente OLAP|Tabele pivot. <br \/>\n\u00cen MSTR, SAP SAC, SAP Analysis, atunci c\u00e2nd ad\u0103uga\u021bi un dataset \u00een raport, toate obiectele de pe el sunt legate \u00eentre ele implicit. \u00cen Tableau, acest lucru nu se \u00eent\u00e2mpl\u0103; trebuie s\u0103 configura\u021bi leg\u0103turile manual. Poate c\u0103 este mai flexibil, dar pentru toate tablourile noastre de bord este o cerin\u021b\u0103 obligatorie, a\u0219a c\u0103 aceasta adaug\u0103 munc\u0103 suplimentar\u0103. \u00cen plus, dac\u0103 face\u021bi filtre legate, astfel \u00eenc\u00e2t, de exemplu, la filtrarea regiunii lista ora\u0219elor s\u0103 fie limitat\u0103 doar la ora\u0219ele din acea regiune, ve\u021bi ajunge imediat la interog\u0103ri secven\u021biale la baza de date sau la Extract, ceea ce \u00eencetine\u0219te semnificativ tabloul de bord.<\/li>\n<li>Limit\u0103ri \u00een func\u021bii. At\u00e2t pe extract, c\u00e2t \u0219i CU ATEN\u021aIE pe dataset-ul din Live-connect nu pot fi realizate transform\u0103ri de mas\u0103. Acest lucru se poate face prin Tableau Prep, dar aceasta implic\u0103 un efort suplimentar \u0219i un alt instrument care trebuie studiat \u0219i \u00eentre\u021binut. De exemplu, nu pute\u021bi transpune datele, face un join al acestora cu sine. Ce se blocheaz\u0103 prin transform\u0103ri pe coloane sau c\u00e2mpuri individuale, care trebuie selectate prin case sau if, gener\u00e2nd interog\u0103ri SQL foarte complexe, unde baza de date \u00ee\u0219i petrece cel mai mult timp compil\u00e2nd textul interog\u0103rii. Aceste inflexibilit\u0103\u021bi ale instrumentului au trebuit rezolvate la nivelul vitrinei, ceea ce duce la complicarea stoc\u0103rii, \u00eenc\u0103rc\u0103rilor \u0219i transform\u0103rilor suplimentare.\n<\/li>\n<\/ol>\n<p>\nNu am abandonat Tableau. Dar ca instrument capabil s\u0103 construiasc\u0103 tablouri de bord industriale \u0219i ca mijloc prin care s\u0103 putem \u00eenlocui \u0219i digitaliza \u00eentreaga sistem\u0103 de raportare corporativ\u0103 a companiei, nu \u00eel consider\u0103m.<\/p>\n<p>\u00cen prezent, dezvolt\u0103m activ un tablou de bord similar pe un alt instrument \u0219i \u00eencerc\u0103m, \u00een paralel, s\u0103 revizuim arhitectura tabloului de bord \u00een Tableau pentru a o simplifica \u0219i mai mult. Dac\u0103 comunit\u0103\u021bii \u00eei va p\u0103rea interesant, vom \u00eemp\u0103rt\u0103\u0219i rezultatele.<\/p>\n<p>A\u0219tept\u0103m, de asemenea, ideile sau sfaturile dumneavoastr\u0103 despre cum se pot construi tablouri de bord rapide \u00een Tableau cu astfel de volume mari de date, deoarece avem \u0219i un site, unde datele sunt mult mai numeroase dec\u00e2t \u00een comer\u021bul cu am\u0103nuntul.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mvideo\/blog\/483656\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445. \u041c\u044b \u0434\u0430\u0432\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 self-service \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 Tableau. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0411\u0435\u0437\u0443\u0433\u043b\u044b\u0439, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043e\u0442\u0434\u0435\u043b\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0413\u0440\u0443\u043f\u043f\u044b \u00ab\u041c.\u0412\u0438\u0434\u0435\u043e-\u042d\u043b\u044c\u0434\u043e\u0440\u0430\u0434\u043e\u00bb, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u0438 \u0438\u0442\u043e\u0433\u0430\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0431\u043e\u0435\u0432\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443, \u043d\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55144","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/tableau-v-roznitse-realno\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Tableau \u0432 \u0440\u043e\u0437\u043d\u0438\u0446\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u043e? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/tableau-v-roznitse-realno\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-12T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tableau \u00een retail, cu adev\u0103rat? | ProHoster","description":"Timpul de raportare \u00een Excel dispare rapid \u2014 tendin\u021ba c\u0103tre instrumente convenabile de prezentare \u0219i analiz\u0103 a informa\u021biilor este vizibil\u0103 \u00een toate domeniile.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/tableau-v-roznitse-realno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Tableau \u0432 \u0440\u043e\u0437\u043d\u0438\u0446\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u043e? | ProHoster","og:description":"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0447\u0451\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 Excel \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u2014 \u0442\u0440\u0435\u043d\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0444\u0435\u0440\u0430\u0445.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/tableau-v-roznitse-realno","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-12T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55144","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:50:02","updated":"2022-10-05 23:10:07","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=55144"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55144\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=55144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=55144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=55144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}