Excelis aruandmisaeg on kiiresti möödas â mugavate info esitamise ja analĂŒĂŒsi tööriistade suundumus on nĂ€htav kĂ”igis valdkondades. Oleme juba ammu arutanud digiteerimistsĂŒklit ja valinud visualiseerimise ja iseteeninduse analĂŒĂŒsi sĂŒsteemiks Tableau. Aleksandr Bezugly, analĂŒĂŒtiliste lahenduste ja aruandluse osakonna juht M.Video-Eldorado grupis, rÀÀkis lahinguplaani dashboard'i ehitamise kogemusest ja tulemustest.
Saan kohe öelda, et mitte kĂ”ike, mis oli plaanitud, ei Ă”nnestunud ellu viia, kuid kogemus oli huvitav, loodan, et see on kasulik ka teile. Kui kellelgi on ideid, kuidas oleks saanud paremini teha â olen vĂ€ga tĂ€nulik nĂ”uannete ja ideede eest.

Allpool on, millega me silmitsi seisime ja mida Ôppisime.
Kust me alustasime
M.Video-Eldorados on hĂ€sti lĂ€bimĂ”eldud andmemudel: struktureeritud teave vajaliku salvestuse sĂŒgavusega ja tohutu hulk fikseeritud vormi aruandeid (vt lĂ€hemalt ). Nendest teevad analĂŒĂŒtikud kas kokkuvĂ”tteid vĂ”i vormindatud jagamisi Excelis, vĂ”i ilusate esitlustena PowerPointis lĂ”ppkasutajatele.
Umbes kaks aastat tagasi hakkasime fikseeritud vormi aruannete asemel looma analĂŒĂŒtilisi aruandeid SAP Analysis'is (Exceli lisand, pĂ”himĂ”tteliselt â kokkuvĂ”tte tabel OLAP mootoril). Kuid see tööriist ei suutnud katta kĂ”igi kasutajate vajadusi, enamik jĂ€tkas teabe kasutamist, mille analĂŒĂŒtikud on tĂ€iendavalt töötlenud.
Meie lÔppkasutajad jagunevad kolme kategooriasse:
Tippjuhtkond. KĂŒsi teavet hĂ€sti esitatud ja arusaadavas vormis.
Keskmine juhtkond, edasijĂ”udnud kasutajad. Huvi avaldavad andmete uurimise vastu ja suudavad iseseisvalt aruandeid koostada, kui neil on tööriistad. Just nemad on saanud SAP Analysis'i analĂŒĂŒtiliste aruannete vĂ”tmekasutajateks.
Mugavad kasutajad. Ei tunne huvi iseseisva andmete analĂŒĂŒsi vastu, kasutavad aruandeid piiratud vabaduse astmega, jagamisformaatides ja kokkuvĂ”tte tabelites Excelis.
Meie idee oli rahuldada kĂ”ikide kasutajate vajadused ja anda neile ĂŒks mugav tööriist. Otsustasime alustada tippjuhtkonnast. Neil olid vaja mugavaid paneele pĂ”hivÀÀrtuste analĂŒĂŒsimiseks. Nii alustasime Tableau'ga ja valisime alguseks kaks suunda: jaemĂŒĂŒgimĂŒĂŒgi ja online mĂŒĂŒgi nĂ€itajad piiratud sĂŒgavuse ja laiusega analĂŒĂŒsis, mis kataks umbes 80% tippjuhtkonna nĂ”utud andmetest.
Kuna armatuurlaudade kasutajad olid tippjuhtkond, lisandus veel ĂŒks toote tĂ€iendav KPI â reageerimiskiirus. Keegi ei taha oodata 20-30 sekundit, kuni andmed uuenevad. Navigeerimine pidi mahtuma 4-5 sekundi sisse, vĂ”i veel parem, töötama koheselt. Ja seda me, kahjuks, saavutada ei suutnud.
Nii nÀgi vÀlja meie pÔhilaudade makett:

PĂ”hijoon on koondada peamised KPI-mootorid, mida kokku tuli 19, vasakule ja esitada nende dĂŒnaamika ja jaotus peamiste atribuutide jĂ€rgi paremale. Ălesanne nĂ€ib lihtne, visualiseerimine loogiline ja arusaadav, kuni ei lĂ€he detailidesse.
Detail 1. Andmemaht
Peamine aastane mĂŒĂŒgitaabel hĂ”lmab meid umbes 300 miljonit rida. Kuna on vajalik peegeldada ka dĂŒnaamikat eelnevatest ja ĂŒle-eelmistest aastatest, on andmemaht ainult tegelike mĂŒĂŒkide osas umbes 1 miljard rida. Ja lisaks hoitakse eraldi teavet planeeritud andmete ja internetimĂŒĂŒgi kohta. SeetĂ”ttu, vaatamata sellele, et kasutasime veergude pĂ”hist in-memory andmebaasi SAP HANA, töötas pĂ€ringu kiirus, mis valis kĂ”ik nĂ€itajad ĂŒhe nĂ€dala kohta praegustest ladustamistest reaalajas, umbes 15-20 sekundit. Selle ĂŒlesande lahendus on ilmselge â tĂ€iendav andmete materialiseerimine. Kuid sellel on ka oma allveesĂŒngid, neist rÀÀgime allpool.
Detail 2. Mitteadditiivsed nÀitajad
Meil on paljusid KPI-sid seotud tƥekkide arvu kohta. Ja see nÀitaja kujutab endast DISTINCT COUNT ridade arvu (tƥekkide pealkirjad) ja nÀitab erinevaid summasid sÔltuvalt valitud atribuutidest. NÀitena, kuidas seda nÀitajat ja sellest tulenevat tuleks arvestada:

Arvutuste tÀpsuse tagamiseks saab:
- Selliste nÀitajate arvutamine reaalajas andmehoidlas;
- Arvutada kogu andmemahu pÔhjal Tableau's, st Tableau'sse pÀring tehes anda kÔik valitud filtrite jÀrgi andmed tƥekkide positsioonide granulaarsuses;
- Luua materialiseeritud vitriin, kus arvutatakse kÔik nÀitajad kÔigis valikute variantides, mis annavad erinevaid mitteaditiivseid tulemusi.
On selge, et nĂ€ites UTE1 ja UTE2 â need on materjali atribuudid, mis esindavad kaubanduslikku hierarhiat. See ei ole staatiline asi, selle kaudu toimub juhtimine ettevĂ”tte sees, kuna erinevate kaubagruppide eest vastutavad erinevad juhid. Meil on olnud palju globaalseid ĂŒlevaateid sellest hierarhiast, kui kĂ”ik tasemed muutsid, kui vaadati ĂŒle omavahelised seosed, samuti pidevaid tĂ€iendavaid muudatusi, kui ĂŒks grupp liigub ĂŒhest sĂ”lmest teise. Tavalises aruandluses arvestatakse seda reaalajas, lĂ€htudes materjali atribuutidest; andmete materialiseerimise korral tuleb vĂ€lja töötada mehhanism selliste muudatuste jĂ€lgimiseks ja ajalooliste andmete automaatseks ĂŒlelaadimiseks. See on ĂŒsna keeruline ĂŒlesanne.
Detail 3. Andmete vÔrdlemine
See punkt on sarnane eelmisele. Asi on selles, et ettevĂ”ttes analĂŒĂŒsi tegemisel on kombeks luua mitu taset vĂ”rreldes eelmise perioodiga:
VÔrdlemine eelmise perioodiga (pÀev pÀevalt, nÀdal nÀdalalt, kuu kuult)
Selles vĂ”rdluses eeldatakse, et sĂ”ltuvalt valitud perioodist (nĂ€iteks aasta 33. nĂ€dal) peame nĂ€itama dĂŒnaamikat 32. nĂ€dala suhtes; kui valime andmed kuu lĂ”ikes, nĂ€iteks mai, siis see vĂ”rdlus nĂ€itaks dĂŒnaamikat aprilli suhtes.
VÔrdlemine eelmise aastaga
Siin on peamine nĂŒanss selles, et vĂ”rreldes pĂ€evade ja nĂ€dalate kaupa peate te vĂ”tma mitte sama pĂ€eva eelmisel aastal, st te ei saa lihtsalt vĂ”tta praegust aastat miinus ĂŒks. Peate vaatama vĂ”rdlevat nĂ€dala pĂ€eva. Samuti, kui vĂ”rrelda kuud, tuleb vĂ”tta tĂ€pselt sama kalendripĂ€ev eelmisel aastal. Samuti on olemas nĂŒansid liigaasta koht. Algsetes andmebaasides on kogu teave jaotatud pĂ€evade kaupa, seal ei ole eraldi vĂ€ljandeid nĂ€dalate, kuude vĂ”i aastate kohta. SeetĂ”ttu, et saada tĂ€ielik analĂŒĂŒtiline ĂŒlevaade paneelil, tuleb arvestada mitte ĂŒhte perioodi, nĂ€iteks nĂ€dalat, vaid 4 nĂ€dalat, ja seejĂ€rel tuleb neid andmeid veel vĂ”rrelda, kajastades dĂŒnaamikat ja kĂ”rvalekaldeid. Seega saab seda vĂ”rdlemise dĂŒnaamika loogikat teostada kas Tableau's vĂ”i vitriini poolel. Jah, me olime nendele detailidele teadlikud ja mĂ”tlesime nendest juba projekteerimise etapis, kuid nende mĂ”ju lĂ”ppdashboordi jĂ”udlusele oli keeruline prognoosida.
Dashboardi rakendamisel lĂ€ksime me pikka Agile-teed. Meie ĂŒlesanne oli vĂ”imalikult kiiresti pakkuda testimiseks töötav tööriist vajalike andmetega. Seega töötasime sprintides ning lĂ€htusime minimaalsetest töödest praeguses andmebaasis.
Osa 1. Usaldus Tableau'sse
IT-toe lihtsustamiseks ja muudatuste kiireks rakendamiseks otsustasime, et arvutusloogika mitteadditiivsete nÀitajate ja varasemate perioodide vÔrdlemiseks tehakse Tableau's.
Etapp 1. KÔik Live, ei mingeid tÀiustusi vitriinides.
Selles etapis ĂŒhendasime Tableau praeguste vitriinidega ja otsustasime vaadata, kuidas arvestatakse tĆĄekkide arvu ĂŒhe aastajooksul.
Tulemus:
Vastus oli aeglane â 20 minutit. Andmete edastamine vĂ”rgu kaudu, suur koormus Tableau's. Me mĂ”istsime, et mitteadditiivsete nĂ€itajate loogikat on vaja rakendada HANA-s. See ei hirmutanud meid, meil oli sarnast kogemust BO ja AnalĂŒĂŒsiga ning me oskasime ehitada kiireid vitriine HANA-s, mis annavad Ă”igesti arvutatud mitteadditiivseid nĂ€itajaid. NĂŒĂŒd jĂ€i vaid need Tableau'le kohandada.
Etapp 2. Lihvime vitriine, ei mingit materialiseerimist, kÔik otse.
Me olime loonud eraldi uue vĂ€ljundi, mis jooksvalt edastas vajalikud andmed TABLEAU jaoks. KokkuvĂ”ttes saime hea tulemuse, olles lĂŒhendanud kĂ”igi nĂ€itajate moodustamise aega ĂŒhe nĂ€dala jooksul 9â10 sekundini. Ootasime ausalt, et Tableau vastuse aeg armatuurlaudade avamisel on esmakordselt 20â30 sekundit ja seejĂ€rel tĂ€nu vahemĂ€lule 10â12, mis oleks meid ĂŒldiselt rahuldanud.
Tulemus:
Esimene armatuurlaudade avamine: 4â5 minutit
Iga klikk: 3â4 minutit
Seda tÀiendavat kasvu vÀljundi töötamises ei osanud keegi oodata.
Osa 2. SĂŒvenemine Tableau'sse
Etapp 1. Tableau jĂ”udluse analĂŒĂŒs ja kiire hÀÀlestamine
Alustasime analĂŒĂŒsi, millele Tableau peamiselt aega kulutab. Selleks on olemas ĂŒsna head tööriistad, mis on kindlasti Tableau pluss. Peamine probleem, mille avastasime, olid vĂ€ga keerulised SQL-pĂ€ringud, mida Tableau genereeris. Need olid seotud eeskĂ€tt:
â andmete transponeerimisega. Kuna Tableau'l puuduvad andmekogumite transponeerimise tööriistad, pidime armatuurlauda vasakpoolsesse ossa KPI-de ĂŒksikasjaliku esitluse loomiseks andmete tabelit genereerima lĂ€bi case. SQL-pĂ€ringute suurus andmebaasis ulatus 120 000 tĂ€hemĂ€rgini.

â ajavahemiku valikuga. Selline pĂ€ring andmebaasi tasemel kulutas kompileerimiseks rohkem aega kui tĂ€itmiseks:

St. pÀringu töötlemine 12 sekundit + 5 sekundit tÀitmine.
Otsustasime lihtsustada arvutuste loogikat Tableau poolel ja viia veel osa arvutustest vÀljundisse ja andmebaasi tasemele. See andis hÀid tulemusi.
Esmalt tegime transponeerimise jooksvalt, kasutades seda tĂ€ieliku vĂ€list ĂŒhendust lĂ”ppfaasis VIEW arvutamisel, vastavalt siin kirjeldatud lĂ€henemisele, ja .

St. lĂ”ime seadistustabeli â transponeerimismatriisi (21x21) ja saime kĂ”ik nĂ€itajad ridade lĂ”ikes.
Oli:

On:

Andmete enda transponeerimine ei vĂ”ta peaaegu ĂŒldse aega. NĂ€dala kĂ”ikide nĂ€itajate pĂ€ring töötas endiselt umbes 10 sekundi jooksul. Kuid töötas kaotatud paindlikkus konkreetsete nĂ€itajate pĂ”hjal dashboardsi koostamisel, st dashboardsi paremas osas, kus on esitatud dĂŒnaamiline detailne jaotumine, töötas vitriin varasemalt 1-3 sekundi jooksul, kuna pĂ€ring toimus ĂŒhe nĂ€itaja jĂ€rgi, kuid nĂŒĂŒd valis andmebaas alati kĂ”ik nĂ€itajad ja filtreeris tulemuse alles siis, kui see Tagastati Tableau.
KokkuvÔttes vÀhenes dashboardsi töökiirus peaaegu kolm korda.
Tulemus:
- 5 sek - dashboardsi ja visualiseerimise parsimine
- 15-20 sek - pÀringute kompileerimise ettevalmistamine Tableau eelÔigete teostamisega
- 35-45 sek - SQL-pÀringute kompileerimine ja nende jÀrgneva tÀitmine Hanas
- 5 sek - tulemuste töötlemine, sortimine, visualiseerimise ĂŒmberarvutamine Tableau's
- Muidugi ei rahuldanud sellised tulemused Àri, seetÔttu jÀtkasime optimeerimist.
Etapp 2. Minimaliseeritud loogika Tableau's, tÀielik materialiseerimine
MĂ”istsime, et ei ole vĂ”imalik ehitada dashboardsi, mille reageerimisaeg on mĂ”ne sekundi jooksul vitriinil, mis töötab 10 sekundi jooksul, ning vaatasime andmete materialiseerimise vĂ”imalusi andmebaasi pool, et luua nĂ”utud dashboards. Kuid me silmitsi seisime globaalsete probleemidega, nagu on eespool kirjeldatud â mitteaktiivsed nĂ€itajad. Me ei suutnud teha nii, et Tableau saaks filtreerimise vĂ”i vĂ”rgu muutmisel paindlikult lĂŒlituda erinevate vitriinide ja tasemete vahel, mis on eelnevalt arvutatud erinevate kaubanduslike hierarhiate jaoks (nĂ€ites kolm pĂ€ringut ilma UTE, UTE1 ja UTE2 annavad erinevad tulemused). Seega otsustasime ĂŒhtlustada dashboardsi, loobuda kaubanduslikust hierarhiast dashboardsis ja vaadata, kui kiireks see saab lihtsustatud versioonis.
Nii et selle viimase etapi kĂ€igus kogusime eraldi ladustamise, kuhu panime transponeeritud kujul kĂ”ik KPI-d. Andmebaasi pool igasugune pĂ€ring selle ladustamisele töötab 0,1â0,3 sekundi jooksul. Dashboardsis saime jĂ€rgmised tulemused:
Esimene avastus: 8-10 sekundit
Iga klÔps: 6-7 sekundit
Aeg, mille Tableau kulutab, koosneb jÀrgmistest:
- 0,3 sek - dashboardsi parsimine ja SQL-pÀringute kompileerimine
- 1,5-3 sek - SQL-pÀringute tÀitmine Hanas peamiste visualiseerimise jaoks (kÀivitub paralleelselt p.1)
- 1,5-2 sek - renderimine, visualiseerimise ĂŒlekalkulatsioon
- 1,3 sek - tĂ€iendavate SQL-pĂ€ringute tĂ€itmine asjakohaste filtrivÀÀrtuste (BrĂ€nd, Divisjon, Linn, Pood) saamiseks, tulemuste analĂŒĂŒs
Kui teha lĂŒhike kokkuvĂ”te
Meile meeldis Tableau tööriist visualiseerimise osas. Kujundamisetapis vaatasime erinevaid visualiseerimise elemente ja leidsime need kÔik raamatukogudest, sealhulgas keerukad mitmeastmelised segmentatsioonid ja mitme draiveriga waterfallid.
Peamise mĂŒĂŒginĂ€itajaga juhtpaneelide kasutuselevĂ”tmisel kohtasime jĂ”udluse probleeme, mida me siiani ei ole suutnud ĂŒletada. Kulutasime rohkem kui kaks kuud ja saime funktsionaalselt mittetĂ€ieliku juhtpaneeli, mille reageerimiskiirus oli piiri peal. Ja selle pĂ”hjal jĂ”udsime jĂ€reldustele:
- Tableau ei oska töötada suurte andmemahtudega. Kui teie algandmemudel sisaldab rohkem kui 10 GB andmeid (umbes 200 miljonit x 50 rida), siis juhtpaneel aeglustub tĂ”siselt - iga klikiga 10 sekunditest mitme minutini. Katsetasime nii live-ĂŒhenduse kui ka eksemplaris.
- Piirangud mitme andmestiku (dataseti) kasutamisel. Standardselt ei ole vĂ”imalik andmestike vahelisi seoseid mÀÀrata. Kui kasutada ringlahendusi andmestike sidumiseks, mĂ”jutab see oluliselt jĂ”udlust. Meie puhul kaalusime andmete materialiseerimist igas vajalikus vaates ja nendele materialiseeritud datasets'idele vahetuste tegemist, sĂ€ilitades varem valitud filtrid â see osutus Tableau's vĂ”imatuks.
- Tableaus ei ole vĂ”imalik teha dĂŒnaamilisi parameetreid. Te ei saa parameetrit, mida kasutatakse andmestiku filtreerimiseks eksemplaris vĂ”i live-ĂŒhenduses, tĂ€ita teise andmestiku valiku vĂ”i teise SQL-pĂ€ringu tulemusega, ainult kasutaja sisendi vĂ”i konstantidega.
- Piirangud, mis on seotud juhtpaneeli koostamisega OLAP|Pivot Table elementidega.
MSTR, SAP SAC, SAP Analysis puhul, kui lisate aruandesse andmekomplekti, siis on kĂ”ik objektid omavahel vaikimisi seotud. Tableau's seda ei ole, seoseid tuleb seadistada kĂ€sitsi. See on tĂ”enĂ€oliselt paindlikum, kuid meie kĂ”igi juhtpaneelide jaoks on see elementide kohustuslik nĂ”ue â seega labour ĐŽĐŸĐżĐŸĐ»ĐœĐžŃДлŃĐœĐ°Ń Đ·Đ°ŃŃаŃŃ. Veelgi enam, kui loote seotud filtrid, nii et nĂ€iteks piirkonna filtreerimisel piiratakse linnade loetelu ainult selle piirkonna linnadega, satute kohe jĂ€rjestikustega pĂ€ringuteni andmebaasi vĂ”i ekraani, mis aeglustab juhtpaneeli mĂ€rgatavalt. - Funktsioonide piirangud. Nii ekraanil kui ka veelgi enam, elava ĂŒhenduse andmekomplektidega ei saa teha massilisi teisendusi. Seda saab teha Tableau Prepiga, kuid see toob kaasa lisakulusid ja veel ĂŒhe tööriista, mida tuleb Ă”ppida ja toetada. NĂ€iteks ei saa te andmeid transpositsioneerida ega liita neid iseendaga. See toimub eraldi veergude vĂ”i vĂ€ljade kaudu, mida tuleb valida lĂ€bi case vĂ”i if, tekitades vĂ€ga keerulisi SQL-pĂ€ringuid, mille puhul andmebaas kulutab enamuse ajast pĂ€ringu koostamisele. Nende tööriista paindumatuste lahendamine tuli teha vitriini tasemel, mis viis andmehoidla keerukuse, tĂ€iendavate koormuste ja teisendusteni.
Me ei ole Tableau'le punkti pannud. Kuid tööriistana, mis suudab luua tööstuslikke juhtpaneele ja vahendina, millega asendada ja digitaliseerida kogu ettevĂ”tte aruandluse sĂŒsteemi, ei pea me Tableau't.
Praegu töötame aktiivselt vĂ€lja sarnast juhtpaneeli teise tööriista abil ja ĂŒritame samal ajal ĂŒle vaadata Tableau juhtpaneeli arhitektuuri, et seda veelgi lihtsustada. Kui kogukonnale see huvi pakub, siis jagame tulemusi.
Ootame ka teie ideid vÔi nÔuandeid selle kohta, kuidas Tableau's suurte andmehulkadega kiiresti juhtpaneele luua, sest meil on ka veebisait, kus andmeid on palju rohkem kui jaekauplustes.
Allikas: habr.com
