Excel'i aruandlus on kiiresti muutumas â trend mugavate andmete esitamise ja analĂŒĂŒsi tööriistade suunas on nĂ€htav kĂ”igis valdkondades. Oleme juba pikalt arutanud aruandluse digitaliseerimist ja oleme valinud visualiseerimise ja iseteeninduse analĂŒĂŒtik tööriista Tableau. Alexander Bezugly, analĂŒĂŒtiliste lahenduste ja aruandluse juht Grupi «M.Video-Eldorado» juures, jagas oma kogemust ja tulemusi kĂ”ige olulisema juhtpaneeli vĂ€ljatöötamisel.
Ătlen kohe, et ei suutnud ellu viia kĂ”ike, mis oli plaanis, kuid kogemus oli huvitav, loodan, et see on kasulik ka teile. Kui kellelgi on ideid, kuidas oleks saanud paremini teha â oleksin vĂ€ga tĂ€nulik nĂ”uannete ja mĂ”tete eest.

Allpool rÀÀgin sellest, millega me silmitsi seisime ja mida me Ôppisime.
Kust me alustasime
Grupil «M.Video-Eldorado» on hĂ€sti vĂ€lja töötatud andmemudel: struktureeritud teave vajaliku salvestus sĂŒgavusega ja tohutu hulk staatilisi aruandeid (vt lĂ€hemalt ). Neist valmistavad analĂŒĂŒtikud kas kokkuvĂ”tte tabelid vĂ”i formaalsed Exceli saadetised, vĂ”i ka ilusaid esitlusi PowerPointis lĂ”ppkasutajatele.
Umbes kaks aastat tagasi hakkasime staatiliste aruannete asemel looma analĂŒĂŒtilisi aruandeid SAP Analysis'is (Exceli lisand, olemuselt OLAP mootori peal oleva kokkuvĂ”tte tabel). Kuid see tööriist ei suutnud rahuldada kĂ”iki kasutajate vajadusi, enamus jĂ€tkas infot töötlemist, mida analĂŒĂŒtikud edastasid.
Meie lÔppkasutajad jagunevad kolme kategooriasse:
Tippjuhtkond. NÔuab teavet hÀsti esitatud ja arusaadavas vormis.
Kesktasandi juhid, edasijĂ”udnud kasutajad. On huvitatud andmete uurimisest ja suudavad iseseisvalt aruandeid koostada, kui neil on tööriistad olemas. Nemad ongi saanud SAP Analysis'i analĂŒĂŒtiliste aruannete vĂ”tmekasutajateks.
Massiivsed kasutajad. Pole huvitatud iseseisvast andmete analĂŒĂŒsimisest, kasutavad aruandeid piiratud vabadusega, saadetiste ja kokkuvĂ”tete vormingus Excelis.
Meie idee oli katta kĂ”igi kasutajate vajadusi ja anda neile ĂŒhine mugav tööriist. Alustasime tippjuhtkonnast. Nende puhul olid vajalikud mugavad paneelid peamiste Ă€ritulemuste analĂŒĂŒsimiseks. Nii alustasime Tableau'ga ja valisime esialgu kaks suunda: jaemĂŒĂŒgi ja online mĂŒĂŒgi nĂ€itajad piiratud sĂŒgavuse ja ulatusega analĂŒĂŒsiks, mis kataks umbes 80% tippjuhtkonna nĂ”udmistest.
Kuna juhtpaneelide kasutajad olid tippjuhtkond, tuli tootele veel ĂŒks tĂ€iendav KPI â reageerimise kiirus. Keegi ei hakka ootama 20-30 sekundit, et andmed uuenduksid. Navigeerimine peab toimuma 4-5 sekundi jooksul, parem oleks hetkega. Ja seda me, kahjuks, ei saavutanud.
Nii nÀgi vÀlja meie pÔhipaneeli makett:

Peamine idee oli ĂŒhendada 19 peamist KPI-d vasakul ja esitleda nende dĂŒnaamikat ja jagunemist peamiste atribuutide lĂ”ikes paremal. Ălesanne tundub lihtne, visualiseerimine on loogiline ja arusaadav, kuni ei sĂŒĂŒvi detailidesse.
Detail 1. Andmete maht
Aasta mĂŒĂŒgitaotlus hĂ”lmab umbes 300 miljonit rida. Kuna on vajalik kajastada ka dĂŒnaamikat eelmisel ja ĂŒleeelsel aastal, on andmemaht ainult tegelike mĂŒkide osas umbes 1 miljard rida. Lisaks sĂ€ilitatakse eraldi planeeritud andmete teave ja internetimĂŒĂŒgiblokk. Seega, isegi kui me kasutasime kolonn-pööramisel in-memory DB SAP HANA, oli kĂ”igi nĂ€itajate valik ĂŒhe nĂ€dala jooksul jooksvalt tehtud pĂ€ringu kiirus umbes 15-20 sekundit. Probleemi lahendus tundub iseenesestmĂ”istetav â lisamaterjaliseerimine andmetest. Kuid selles on samuti oma ahvatlused, neist allpool.
Detail 2. Mitte-additiivsed nÀitajad
Paljud meie KPI-d on seotud tƥekkide arvuga. See nÀitaja esindab COUNT DISTINCT ridade arvu (tƥekkide pealkirjades) ja nÀitab erinevaid summasid sÔltuvalt valitud atribuutidest. NÀiteks, kuidas see nÀitaja ja sellest tuletatud nÀitajad peaksid olema arvutatud:

Arvutuste tÀpsuse tagamiseks vÔime:
- Teha sarnaste nÀitajate arvutusi jooksvalt andmehÔivele;
- Teha arvutused Tableau's kogu andmemahule, st edastada Tableau's kÔik andmed valitud filterite kohaselt tƥekkide positsioonides;
- Luua materialiseeritud vitriin, kus on arvutatud kÔik nÀitajad kÔigis valikutes, andes erinevaid mitte-additiivseid tulemusi.
Selge on, et nĂ€ites UTE1 ja UTE2 on need materjali atribuudid, mis esindavad kaubanduslikku hierarhiat. See ei ole staatiline asi, vaid selle kaudu toimub haldus ettevĂ”tte sees, sest erinevate tootegruppide eest vastutavad erinevad juhid. Meil oli palju globaalset ĂŒlevaadet sellest hierarhiast, kui muutusid kĂ”ik tasemed, kui ĂŒle vaadati seosed ning pidevad punktmuudatused, kui ĂŒks grupp liigub ĂŒhest sĂ”lmest teise. Tavalises aruandluses arvestatakse seda kĂ”ike jooksvalt materjali atribuutidest; andmete materialiseerimise korral on vajalik vĂ€lja töötada mehhanism sarnaste muudatuste jĂ€lgimiseks ja ajalooliste andmete automaatseks ĂŒlevoodamiseks. Tegu on ĂŒsna keerulise ĂŒlesandega.
Detail 3. Andmete vÔrdlemine
See punkt on sarnane eelnevale. Asjaolu on see, et ettevĂ”ttes analĂŒĂŒsimisel on tavaks koostada mitu vĂ”rreldavat taset eelmise perioodiga:
VÔrdlemine eelmise perioodiga (pÀev pÀeva, nÀdal nÀdalasse, kuu kuusse)
Selles vĂ”rdlemises eeldatakse, et kasutaja valitud perioodi (nĂ€iteks aasta 33. nĂ€dal) korral peaksime nĂ€itama dĂŒnaamikat 32. nĂ€dalaga; kui valiksime andmed kuu kohta, nĂ€iteks mai, siis see vĂ”rdlus nĂ€itaks dĂŒnaamikat aprilli suhtes.
VÔrdlemine eelmise aastaga
Siin on peamine nĂŒanss see, et pĂ€evade ja nĂ€dalate vĂ”rdlemisel ei tohi vĂ”tta sama pĂ€eva eelmisest aastast, see tĂ€hendab, et te ei saa lihtsalt vĂ”tta kĂ€esoleva aasta minus ĂŒks. Peate vaatama vĂ”rdlevat nĂ€dalapĂ€eva. Kuu vĂ”rdlemisel tuleb seevastu vĂ”tta tĂ€pselt sama kalendripĂ€ev eelmisest aastast. Samuti on nĂŒansse liigsetes aastates. Algandmehoidlas on kogu teave jaotatud pĂ€evade jĂ€rgi, seal ei ole eraldi vĂ€lju nĂ€dalate, kuude vĂ”i aastate jaoks. SeetĂ”ttu, et saada tĂ€ielikku analĂŒĂŒtilist lĂ”iget paneelil, tuleb arvestada mitte ĂŒhte perioodi, nĂ€iteks nĂ€dalat, vaid 4 nĂ€dalat ja seejĂ€rel need andmed veel vĂ”rrelda, kajastades dĂŒnaamikat ja kĂ”rvalekaldeid. Vastavalt sellele saab seda vĂ”rdlemise dĂŒnaamika loogikat rakendada kas Tableau'is vĂ”i vitriini poolel. Jah, ja nendest nĂŒanssidest olime muidugi teadlikud ja mĂ”tlesime juba projekteerimisfaasis, kuid nende mĂ”ju lĂ”pp-dashboardi jĂ”udlusele ei olnud kerge prognoosida.
Dashboardi rakendamisel lĂ€bisime pika Agile-teekonna. Meie ĂŒlesanne oli vĂ”imalikult kiiresti pakkuda testimiseks tööriist, mis sisaldab vajalikke andmeid. SeetĂ”ttu lĂ€ksime sprintide kaupa ja lĂ€htusime olemasoleva andmehoidla tööde minimeerimisest.
Osa 1. Usaldus Tableau'sse
IT-toe lihtsustamiseks ja muudatuste kiireks rakendamiseks otsustasime, et arvutuste logika mitteadditiivsete nÀitajate ja varasemate perioodide vÔrdlemiseks tehakse Tableau's.
Etapp 1. KÔik on Live, ei mingit vitriinide tÀiendamist.
Selles etapis ĂŒhendasime Tableau praeguste vitriinidega ja otsustasime vaadata, kuidas arvutatakse tĆĄekkide arvu ĂŒhe aasta jooksul.
Tulemus:
Vastus oli pettumust valmistav â 20 minutit. Andmete edastamine vĂ”rgu kaudu, suur koormus Tableau'le. MĂ”istsime, et mitteadditiivsete nĂ€itajate loogikat tuleb rakendada HANA-s. See ei hirmutanud meid, meil oli juba sarnane kogemus BO ja Analysis'iga ning teadsime, kuidas luua kiiresti vitriine HANA-s, mis annavad Ă”igesti arvutatud mitteadditiivsed nĂ€itajad. NĂŒĂŒd jĂ€i vaid kohandada need Tableau jaoks.
Etapp 2. Viimistleme vitriine, ei mingit materialiseerimist, kÔik reaalajas.
Loomasime tĂ€iesti uue vitriini, mis pakkus reaalajas nĂ”utavaid andmeid TABLEAU'le. KokkuvĂ”ttes saime head tulemused, vĂ€hendasime kĂ”igi nĂ€itajate loomise aega ĂŒhe nĂ€dala jooksul 9-10 sekundi peale. Ja ausalt öeldes ootasime, et Tableau's oleks dashboardi reageerimise aeg esimesel avamisel 20-30 sekundit ja seejĂ€rel tĂ€nu vahemĂ€lule 10 kuni 12, mis oleks meid kokkuvĂ”ttes rahuldanud.
Tulemus:
Esimene dashboardi avamine: 4-5 minutit
Iga klikk: 3-4 minutit
Sellist lisakoormust vitriini tööle ei oodanud keegi.
Osa 2. SĂŒvenemine Tableau'sse
Etapp 1. Tableau jĂ”udluse analĂŒĂŒs ja kiire viimistlemine
Alustasime analĂŒĂŒsi, millele Tableau oma peamise aja kulutab. Selleks on olemas ĂŒsna head tööriistad, mis on kindlasti Tableau pluss. Peamine probleem, mille me tuvastasime, olid vĂ€ga keerulised SQL-pĂ€ringud, mille Tableau koostas. Need olid peamiselt seotud:
â andmete transponimisega. Kuna Tableau'il ei ole tööriistu andmekogumite transponimiseks, pidime koostama tabeli lĂ€bi case'i, et luua vasakpoolne osa dashboarist, kus oleks detailsed KPI-ed. SQL-pĂ€ringute suurus andmebaasis ulatus 120 000 mĂ€rgini.

â ajaperioodi valimisega. Selline pĂ€ring andmebaasi tasandil nĂ”udis kompileerimisele rohkem aega kui tĂ€itmisele:

St. pÀringu töötlemine 12 sekundit + 5 sekundit tÀitmine.
Otsustasime lihtsustada arvutuste loogikat Tableau kĂŒljel ja viia veel ĂŒhe osa arvutustest andmemassiivi ja andmebaasi tasemele. See tĂ”i hĂ€id tulemusi.
Esmalt viisime lÀbi transpositsiooni reaalajas, kasutades full outer join'i VIEW lÔpparvutuses, kooskÔlas sellise lÀhenemisega, mis on kirjeldatud wiki's. ja .

See tĂ€hendab, et tegime seadistusliku tabeli â transpositsioonimaatriksi (21x21) ja saime kĂ”ik nĂ€itajad ridade kaupa.
Oli:

Muudetud:

Andmebaas kulutab transpositsioonile peaaegu ei aega. NĂ€itajate pĂ€ring nĂ€dalas töötas endiselt umbes 10 sekundi jooksul. Kuid kaotasime paindlikkuse spetsiifiliste nĂ€itajate, st. paremal pool olevas armatuurlaud, kus nĂ€idatakse konkreetses nĂ€itaja dĂŒnaamikat ja detailset jaotust, varem töötas pĂ”hitasand 1-3 sekundiga, kuna pĂ€ring lĂ€ks ĂŒhe nĂ€itaja peale, ja nĂŒĂŒd valib andmebaas alati kĂ”ik nĂ€itajad ja filtreerib tulemuse enne, kui see tagastatakse Tableau'sse.
KokkuvÔttes vÀhenes armatuurlauda töökiirus peaaegu kolmandiku vÔrra.
Tulemus:
- 5 sek â armatuurlauda ja visualiseerimise parsimine
- 15-20 sek â pĂ€ringute koostamise ettevalmistamine Tableau's, sealhulgas eel-arvutused
- 35-45 sek â SQL-pĂ€ringute koostamine ja nende jĂ€rkjĂ€rguline tĂ€itmine Hanas
- 5 sek â tulemuste töötlemine, jĂ€rjestamine, visualiseerimiste rekalkuleerimine Tableau's
- Loomulikult ei rahuldanud sellised tulemused Àri ja jÀtkasime optimeerimist.
Etapp 2. Minimumpunktid Tableau's, tÀielik materialiseerimine
Me mĂ”istsime, et armatuurlauda ĂŒlesehitamine, mille vastusaeg on mitme sekundi jooksul, on 10 sekundi töötava idufirma jaoks vĂ”imatu, ja kaalume andmete materialiseerimise vĂ”imalusi andmebaasi poolel just nĂ”utud armatuurlaudade jaoks. Kuid seisime silmitsi ĂŒhtse probleemiga, nagu eespool mainitud â mitte-additiivsed nĂ€itajad. Me ei suutnud saavutada, et Tableau saaks filtreid vĂ”i avamisi muutes kiiresti vahetada erinevate vitriinide ja tasemete vahel, mis olid eelnevalt arvutatud erinevate tootehierarhiate jaoks (nĂ€ide kolme pĂ€ringu, ilma UTE, UTE1 ja UTE2 kohta, mis moodustavad erinevaid tulemusi). SeetĂ”ttu otsustasime armatuurlauda lihtsustada, loobuda tootehierarhiast armatuurlaudades ja vaadata, kui kiireks see lihtsustatud versioonis saab.
Nii et selle viimase etapi kĂ€igus kogusime eraldi salvestusruumi, kuhu koondasime transpositsioonitud kĂ”iki KPI-sid. Andmebaasi poolel töötleb mis tahes pĂ€ring sellise salvestusruumi puhul 0,1â0,3 sekundi jooksul. Armatuurlaudades saime jĂ€rgmised tulemused:
Esimene avastus: 8-10 sekundi jooksul
Iga klikk: 6-7 sekundit
Aeg, mille Tableau kulutab, koosneb jÀrgmistest:
- 0,3 sek. â armatuurlauda parsimine ja SQL-pĂ€ringute koostamine
- 1,5-3 sek. â SQL-pĂ€ringute tĂ€itmine Hanas peamiste visualiseerimiste jaoks (kĂ€ivitub paralleelselt p.1-ga)
- 1,5-2 sek. â renderdamine, visualiseerimiste rekalkuleerimine
- 1,3 sek. â tĂ€iendavate SQL-pĂ€ringute tĂ€itmine, et saada asjakohaseid filtreerimise vÀÀrtusi (brĂ€nd, divisjon, linn, pood), tulemuste parsimine
Kui kokku vĂ”tta lĂŒhidalt
Meile meeldis Tableau tööriist visualiseerimise osas. PrototĂŒĂŒpimise etapis kaalume erinevaid visualiseerimise elemente ja kĂ”ik need leidsime raamatukogudes, sealhulgas keerulised mitmetasandilised segmentatsioonid ja multi-driver waterfallâid.
Peamiste mĂŒĂŒgi nĂ€itajatega armatuurlaudade rakendamisel seisime silmitsi jĂ”udluse probleemidega, mida me pole veel suutnud ĂŒletada. Oleme kulutanud ĂŒle kahe kuu ja saanud funktsionaalselt pooliku armatuurlauda, mille vastusaeg on piiripealne. Teeme enda jaoks jĂ€rgmised jĂ€reldused:
- Tableau ei oska töötada suurte andmehulga korral. Kui teie algses andmemudelis on rohkem kui 10 GB andmeid (umbes 200 mln x 50 rida), siis armatuurlaud aeglustub mĂ€rkimisvÀÀrseltâalates 10 sekundist kuni mitme minutini iga klikki kohta. Oleme katsetanud ja reaalajas ĂŒhenduste ning ekstrapoolide korral. Kiirus on sarnane.
- Piirang mitme salvestuse (andmekogumite) kasutamisel. Standardsete vahenditega ei ole vĂ”imalik mÀÀrata andmekogumite vahelist seost. Kui kasutada eelnevaid lahendusi andmekogumite vaheliste suhete loomiseks, avaldab see oluliselt mĂ”ju jĂ”udlusele. Meie puhul kaalusime andmete materialiseerimise vĂ”imalusi igas vajalikus vaates ja sellel materialiseeritud andmekogul vahetamise tegemiseks varasemate valitud filtrite sĂ€ilitamistâsee osutus Tableau's vĂ”imatuks.
- Tableaus ei ole vĂ”imalik teha dĂŒnaamilisi parameetreid. Te ei saa parameetrit, mida kasutatakse andmestiku filtreerimiseks ekstractis vĂ”i live-ĂŒhenduses, tĂ€ita teise valiku tulemusega andmestikust vĂ”i teise SQL-pĂ€ringu tulemusega, vaid ainult kasutaja natiivse sisestuse vĂ”i konstantsiga.
- Piirangud, mis on seotud OLAP|Pivot tabelitega dashboard'i loomisega.
MSTR, SAP SAC, SAP Analysis programmides, kui lisate aruandesse andmestiku, siis kĂ”ik selle objektid on vaikimisi omavahel seotud. Tableaus seda ei tee, seoseid tuleb seadistada kĂ€sitsi. See on vĂ”ib-olla paindlikum, kuid kĂ”igi meie dashboard'ide jaoks on see elementide kohustuslik nĂ”ue â seega toob see kaasa lisatööjĂ”u. Rohkem veel, kui loote seotud filtreid, et nĂ€iteks piirkonna filtreerimisel piirata linnade loend ainult selle piirkonna linnadega, satute kohe jĂ€rjestikustesse pĂ€ringutesse andmebaasi vĂ”i ekstracti, mis aeglustab dashboard'i mĂ€rgatavalt. - Funktsioonide piirangud. Nii ekstractide kui veelgi enam live-ĂŒhenduse andmestike ĂŒle ei saa teha massilisi transformatsioone. Seda on vĂ”imalik teha Tableau Prep kaudu, kuid see tĂ€hendab lisatöötunde ja veel ĂŒhe tööriista Ă”ppimist ning haldamist. NĂ€iteks ei saa te andmeid transponeerida, teha endaga liite. See sulgub eraldi veergude vĂ”i vĂ€ljade kaudu tehtavatesse transformatsioonidesse, mida tuleb valida case'i vĂ”i if'i kaudu ning see tekitab vĂ€ga keerulisi SQL-pĂ€ringuid, mille puhul andmebaas kulutab rohkem aega pĂ€ringu teksti koostamisele. Need tööriistade paindumatuse probleemid tuli lahendada vitriini tasemel, mis toob kaasa andmehoidla keerukuse, lisakoormuse ja transformatsioonid.
Me ei ole Tableau'l risti ette pannud. Kuid tööriistana, mis suudab ehitada tööstuslikke dashboard'e ja vahendina, millega asendada ja digitaliseerida kogu ettevĂ”tte aruandluse sĂŒsteemi, ei pea me Tableau'd sobivaks.
Me arendame aktiivselt sarnast dashboard'i teise tööriista peal ja samal ajal pĂŒĂŒame ĂŒle vaadata Tableau dashboard'i arhitektuuri, et veelgi enam lihtsustada. Kui kogukonnale huvi pakub â rÀÀgime tulemustest.
Ootame ka teie ideid vĂ”i nĂ€punĂ€iteid selle kohta, kuidas Tableau's luua kiireid dashboard'e suurte andmehulkade ĂŒle, arvestades, et meil on ka veebileht, kus andmeid on oluliselt rohkem kui jaeĂ€ris.
Allikas: habr.com
