Vremenski okvir za izveštavanje u Excel-u brzo se smanjuje — trend ka praktičnim alatima za prezentaciju i analizu informacija očigledan je u svim sektorima. Već dugo diskutujemo o digitalizaciji izveštavanja i izabrali smo sistem vizuelizacije i self-service analitike Tableau. Aleksandar Bezugly, šef odeljenja za analitička rešenja i izveštavanje grupe "M.Video-Eldorado", podelio je iskustva i rezultate izgradnje operativnog kontrolnog panela.
Da kažem odmah, nije sve što je zamišljeno bilo moguće realizovati, ali iskustvo je bilo zanimljivo i nadam se da će vam biti korisno. A ako neko ima ideje o tome kako bi moglo bolje – bio bih veoma zahvalan za savete i ideje.

U nastavku o tome s čime smo se suočili i šta smo saznali.
Kako smo začeli
U "M.Video-Eldorado" postoji dobro razrađen model podataka: strukturirane informacije sa potrebnom dubinom skladištenja i ogroman broj izveštaja fiksnog formata (vidi više ). Iz njih analitičari prave ili pivot tabele ili formatirane distribucije u Excel-u, ili atraktivne prezentacije u PowerPoint-u za krajnje korisnike.
Otprilike pre dve godine umesto izveštaja fiksnog formata počeli smo da kreiramo analitičke izveštaje u SAP Analysis (nadogradnja za Excel, u suštini – pivot tabela iznad OLAP mašine). Međutim, ovaj alat nije mogao da zadovolji potrebe svih korisnika, većina je nastavila da koristi informacije dodatno obrađene od strane analitičara.
Naši krajnji korisnici dele se u tri kategorije:
Top menadžment. Zahteva informacije u dobro predstavljenom i jasno razumljivom obliku.
Srednji menadžment, napredni korisnici. Zainteresovani su za istraživanje podataka i sposobni su samostalno da prave izveštaje uz dostupne alate. Oni su postali ključni korisnici analitičkih izveštaja u SAP Analysis.
Masovni korisnici. Nisu zainteresovani za samostalnu analizu podataka, koriste izveštaje sa ograničenim stepenom slobode, u formatu distribucija i pivot tabela u Excel-u.
Naša ideja je bila zadovoljiti potrebe svih korisnika i pružiti im jedan praktičan alat. Odlučili smo početi s vrhunskim menadžmentom. Njih su zanimale intuitivne ploče za analizu ključnih poslovnih rezultata. Tako smo krenuli s Tableau-om i na početku odabrali dva pravca: prodajne pokazatelje u maloprodaji i onlajn s ograničenom dubinom i širinom analize, koji bi obuhvatili otprilike 80% podataka koji su traženi od vrhunskog menadžmenta.
Budući da su korisnici nadzorne ploče bili vrhunski menadžment, pojavio se još jedan dodatni KPI proizvoda – brzina odgovora. Niko neće čekati 20-30 sekundi dok se podaci ažuriraju. Navigacija je trebala trajati 4-5 sekundi, a još bolje odmah. Nažalost, to nismo mogli postići.
Ovako je izgledao dizajn naše glavne nadzorne ploče:

Ključna ideja je kombinovati glavne KPI-drajvere, kojih je na kraju bilo 19, s leve strane i prikazivati njihovu dinamiku i razbijanje po glavnim atributima s desne strane. Zadatak deluje jednostavno, vizualizacija je logična i razumljiva, sve dok se ne zaronite u detalje.
Detalj 1. Obim podataka
Glavna tabela prodaje za godinu zauzima otprilike 300 miliona redova. Kako je potrebno prikazati dinamiku u odnosu na prošlu i pretprošlu godinu, obim podataka samo za stvarne prodaje iznosi oko 1 milijardu redova. A posebno se čuva i informacija o planiranim podacima i blok internetske prodaje. Stoga, uprkos tome što smo koristili kolumnarnu in-memory bazu podataka SAP HANA, brzina izvršavanja upita sa izborom svih pokazatelja za jednu nedelju iz trenutnih skladišta činila je oko 15-20 sekundi. Rešenje ovog zadatka samo se nameće – dodatna materializacija podataka. Ali, to takođe ima zamke, o kojima ćemo govoriti kasnije.
Detalj 2. Neaditivni pokazatelji
Mnogi naši KPI su vezani za broj računa. Ovaj pokazatelj predstavlja COUNT DISTINCT broja redova (naslova računa) i prikazuje različite sume u zavisnosti od odabranih atributa. Kao primer, kako ovaj pokazatelj i izvedeni od njega treba da se računaju:

Za tačnost proračuna možete:
- Izvoditi proračun ovakvih pokazatelja u realnom vremenu u skladištu;
- Izvršiti proračun na celom obimu podataka u Tableau-u, tj. na zahtev u Tableau-u slati sve podatke prema odabranim filtrima u granuliarnoj poziciji računa;
- Ustvariti materializirano izložbo, v katerem bodo izračunani vsi kazalniki za vse različne vzorčne možnosti, ki zagotavljajo različne neaditivne rezultate.
Jasno je, da sta v primeru UTE1 in UTE2 atributa materiala, ki predstavljata blago hierarhijo. To ni statična stvar, saj preko nje poteka upravljanje znotraj podjetja, saj različne skupine blaga upravljajo različni vodje. Imeli smo veliko globalnih pregledov te hierarhije, ko so se spreminjale vse ravni, pregledov medsebojnih povezav, pa tudi nenehnih točkovnih sprememb, ko ena skupina preide iz enega vozlišča v drugo. V običajnem poročanju se vse to izračunava sproti iz atributov materiala, v primeru materializacije teh podatkov je potrebno razviti mehanizem za sledenje takšnim spremembam in samodejno ponovno nalaganje zgodovinskih podatkov. Zelo zahtevna naloga.
Podrobnost 3. Primerjava podatkov
Ta točka je podobna prejšnji. Gre za to, da podjetje pri analizi običajno oblikuje več nivojev primerjave s prejšnjim obdobjem:
Primerjava s prejšnjim obdobjem (dan za dnem, teden za tednom, mesec za mesecem)
V tej primerjavi se predpostavlja, da moramo, odvisno od izbranega obdobja s strani uporabnika (na primer 33. teden leta), prikazati dinamiko do 32. tedna. Če bi izbrali podatke za mesec, na primer maj, bi ta primerjava pokazala dinamiko do aprila.
Primerjava s prejšnjim letom
Glavna razlika je u tome što kada upoređujete po danima i nedeljama, ne uzimate isti dan prošle godine, tj. ne možete jednostavno uzeti trenutnu godinu minus jedan. Morate posmatrati odgovarajući dan u nedelji. A kada upoređujete mesece, naprotiv, morate uzeti isti kalendarski dan prošle godine. Takođe postoje posebni slučajevi kod prestupnih godina. U izvorim skladištima sve informacije su raspoređene po danima, nema posebnih polja za nedelje, mesece, godine. Zato da biste dobili kompletan analitički uvid na panelu, neophodno je da izračunate ne jedan period, na primer nedelju, već 4 nedelje, a onda te podatke još uporedite, reflektujete dinamiku, odstupanja. Prema tome, ovu logiku formiranja poređenja u dinamici takođe možete realizovati ili u Tableau-u, ili na strani vitrine. Da, i o ovim detaljima smo, naravno, znali i razmišljali još u fazi projektovanja, ali je bilo teško predvideti njihov uticaj na performanse konačnog panela.
Tokom implementacije panela prošli smo dugi Agile put. Naš cilj je bio da što pre obezbedimo radni alat sa potrebnim podacima za testiranje. Zato smo radili u sprinovima i fokusirali se na minimizaciju radova na stranici trenutnog skladišta.
Deo 1. Verovanje u Tableau
Kako bismo pojednostavili IT podršku i brzo implementirali promene, odlučili smo da logiku izračunavanja neadditivnih pokazatelja i poređenja prošlih perioda radimo u Tableau-u.
Faza 1. Sve uživo, bez dorada vitrina.
U ovoj fazi povezali smo Tableau sa trenutnim vitrima i odlučili da vidimo kako će se izračunavati broj računa za jednu godinu.
Rezultat:
Odgovor je bio poražavajući – 20 minuta. Prenos podataka preko mreže, velika opterećenost na Tableau-u. Shvatili smo da logiku sa neadditivnim pokazateljima treba realizovati na HANA-i. To nas nije previše plašilo, već smo imali sličnog iskustva sa BO i Analysis i znali smo kako da gradimo brze vitrine u HANA-i koje daju tačno izračunate neadditivne pokazatelje. Sada je preostalo samo da ih prilagodimo Tableau-u.
Faza 2. Podešavamo vitrine, nikakva materijalizacija, sve u trenutku.
Ustvarili smo novo izložbo, ki je na hitro izdajala zahtevane podatke za TABLEAU. Na splošno smo dosegli dober rezultat, zmanjšali smo čas za oblikovanje vseh kazalnikov na 9-10 sekund namesto tedna. Iskreno smo pričakovali, da bo čas odziva nadzorne plošče v Tableau 20-30 sekund pri prvem odpiranju, nato pa zaradi predpomnjenja od 10 do 12, kar bi nas zadovoljilo.
Rezultat:
Prvo odpiranje nadzornih plošč: 4-5 minut
Vsak klik: 3-4 minute
Nihče ni pričakoval takega dodatka k delovanju izložbe.
Del 2. Potopitev v Tableau
Korak 1. Analiza zmogljivosti Tableau in hitro prilagajanje
Začeli smo analizirati, kako dolgo Tableau porabi časa. Za to obstaja precej dober nabor orodij, kar je, seveda, plus za Tableau. Glavna težava, ki smo jo odkrili, so bili zelo kompleksni SQL poizvedbe, ki jih je sestavljal Tableau. Te so bile povezane predvsem z:
— transponiranjem podatkov. Ker Tableau nima orodij za transponiranje datasetov, smo morali za oblikovanje levega dela nadzorne plošče s podrobnim prikazom vseh KPIs oblikovati tabelo preko case. Velikost SQL poizvedb v BDP je dosegla 120.000 znakov.

— izbiro časovnega obdobja. Takšna poizvedba na ravni BDP je potrebovala več časa za kompilacijo kot za izvajanje:

T.j. obdelava poizvedbe 12 sekund + 5 sekund izvajanja.
Odločili smo se poenostaviti logiko izračunov na strani Tableau in prenesti še en del izračunov na izložbo in nivo BDP. To je prineslo dobre rezultate.
Sprva smo opravili transponiranje na hitro, to smo naredili preko full outer join v končnem koraku izračuna VIEW, v skladu s takim pristopom, opisanem na wiki in .

Torej, ustvarili smo nastavitveno tabelo – transponirno matrico (21x21) in pridobili vse kazalnike v vrstičnem razdelku.
Bilo je:

Postalo je:

Transponiranje baze podataka gotovo ne zahtijeva vrijeme. Upit za sve pokazatelje za tjedan još uvijek se obrađivao otprilike za 10 sekundi. Međutim, izgubila se fleksibilnost u izradi nadzorne ploče za određeni pokazatelj, tj. za desni dio nadzorne ploče gdje je predstavljena dinamika i detaljna podjela određenog pokazatelja, ranije je vitrina obradila u 1-3 sekunde jer je upit išao za jednim pokazateljem, a sada baza podataka uvijek odabira sve pokazatelje i filtrira rezultat prije nego što ga vrati u Tableau.
Kao rezultat, brzina rada nadzorne ploče smanjena je gotovo tri puta.
Rezultat:
- 5 sek — parsiranje nadzorne ploče, vizualizacija
- 15-20 sek — priprema za kompilaciju upita s izvršavanjem predračuna u Tableuu
- 35-45 sek — kompilacija SQL upita i paralelno-sekvencijalno njihovo izvršavanje u Hani
- 5 sek — obrada rezultata, sortiranje, ponovni izračun vizualizacija u Tableuu
- Naravno, takvi rezultati nisu zadovoljili poslovanje, i nastavili smo optimizaciju.
Faza 2. Minimalna logika u Tableuu, potpuna materializacija
Shvatili smo da je nemoguće izgraditi nadzornu ploču s vremenom odziva od nekoliko sekundi na vitrinama koje rade 10 sekundi, i razmatrali smo mogućnosti materializacije podataka na strani baze podataka posebno za traženu nadzornu ploču. Međutim, suočili smo se s globalnim problemom, opisanim iznad – neaditivni pokazatelji. Nismo uspjeli postići da prilikom promjena filtara ili razrade Tableau fleksibilno prebacuje između različitih vitrina i razina, predračunatih za različite robne hijerarhije (u primjeru tri upita bez UTE, s UTE1 i UTE2 formiraju različite rezultate). Stoga smo odlučili pojednostaviti nadzornu ploču, odustati od robne hijerarhije i vidjeti koliko brza može biti u pojednostavljenoj verziji.
Dakle, u ovoj posljednjoj fazi sastavili smo posebno skladište u kojem smo pohranili sve KPI-e u transponiranom obliku. Na strani baze podataka svaki upit za to skladište se obrađuje za 0,1 – 0,3 sekunde. Na nadzornoj ploči dobili smo sljedeće rezultate:
Prvo otkriće: 8-10 sekundi
Svaki klik: 6-7 sekundi
Vrijeme koje Tableau troši sastoji se od:
- 0,3 sek — parsiranje nadzorne ploče i kompilacija SQL upita
- 1,5-3 sek — izvršavanje SQL upita u Hani za glavne vizualizacije (pokreće se paralelno s točkom 1)
- 1,5-2 sekunde — renderiranje, ponovo izračunavanje vizualizacija
- 1,3 sekunde — izvršavanje dodatnih SQL upita za dobijanje relevantnih vrednosti filtera (Brend, Divizija, Grad, Prodavnica), parsiranje rezultata
Ako bismo saželi
Svideo nam se alat Tableau u pogledu vizualizacije. U fazi dizajniranja razmatrali smo različite elemente vizualizacije i sve smo ih našli u bibliotekama, uključujući složene višeslojne segmentacije i višekanalne waterfall-e.
U implementaciji kontrolnih panela sa ključnim pokazateljima prodaje naišli smo na probleme sa performansama koje još nismo uspeli da prevaziđemo. Potrošili smo više od dva meseca i dobili funkcionalno nepotpun kontrolni panel, čija je brzina odziva na granici prihvatljivog. I za sebe smo izvukli zaključke:
- Tableau ne može raditi sa velikim količinama podataka. Ako imate više od 10 GB podataka u izvornom modelu podataka (otprilike 200 miliona x 50 redova), kontrolni panel se ozbiljno usporava – od 10 sekundi do nekoliko minuta po kliku. Eksperimentisali smo i sa live-connect-om i sa ekstraktima. Brzina rada je slična.
- Ograničenje kod korišćenja više skladišta (dataseta). Nema mogućnosti standardnim sredstvima označiti međusobne odnose dataseta. Ako koristite alternativna rešenja za povezivanje dataseta, to će značajno uticati na performanse. U našem slučaju razmatrali smo opciju materializacije podataka u svakom potrebnom preseku prikaza i na tim materializovanim datasetima praviti prebacivanja uz zadržavanje ranije odabranih filtera – to se ispostavilo nemogućim u Tableau.
- U Tableaub nije moguće napraviti dinamičke parametre. Ne možete parametar koji se koristi za filtriranje dataseta u ekstraktu ili pri live-connect-u popuniti rezultatom drugog odabira iz dataseta ili rezultata drugog SQL upita, samo nativni unos korisnika ili konstanta.
- Ograničenja vezana za izgradnju kontrolnog panela sa elementima OLAP|Pivot tabela.
V MSTR, SAP SAC, SAP Analysis, ko dodate podatkovni niz v poročilo, so vsi objekti nanj privzeto povezani. Pri Tableau tega ni, povezave je treba nastaviti ročno. To je verjetno bolj fleksibilno, a za vse naše nadzorne plošče je to obvezna zahteva za elemente – zato so to dodatni delovni napori. Poleg tega, če delate povezane filtri, da, na primer, pri filtriranju regij seznam mest omeji le na mesta te regije, takoj naletite na zaporedne poizvedbe v bazo podatkov ali ekstrakt, kar vidno upočasni nadzorno ploščo. - Omejitve v funkcijah. Tako nad ekstraktom kot še toliko bolj nad podatkovnim nizom iz Live-connecta ni mogoče izvajati množičnih pretvorb. To lahko storite preko Tableau Prep, vendar so to dodatni delovni napori in še orodje, ki se ga je treba naučiti in vzdrževati. Na primer, ne morete transponirati podatkov ali izvesti join samih s seboj. To se zapira preko pretvorb po posameznih stolpcih ali poljih, ki jih je treba izbrati preko case ali if, kar povzroča zelo zapletene SQL poizvedbe, pri katerih baza večino časa porabi za oblikovanje besedila poizvedbe. Te togosti orodja smo morali rešiti na ravni vitrinske plasti, kar vodi do zapletenja skladišča, dodatnih obremenitev in transformacij.
Nismo opustili Tableau. Vendar ga kot orodje, sposobno graditi industrijske nadzorne plošče in sredstvo, s katerim lahko zamenjamo in digitaliziramo celoten sistem korporativnega poročanja podjetja, ne obravnavamo.
Trenutno aktivno razvijamo podobno nadzorno ploščo na drugem orodju in hkrati poskušamo ponovno preučiti arhitekturo nadzorne plošče v Tableau, da bi jo še bolj poenostavili. Če bo skupnost zainteresirana, bomo delili rezultate.
Prav tako čakamo na vaše ideje ali nasvete o tem, kako v Tableau graditi hitre nadzorne plošče nad takšnimi velikimi količinami podatkov, saj imamo tudi spletno mesto, kjer je podatkov še veliko več kot v trgovini.
Izvor: habr.com
