Tableau mazumtirdzniecībā, vai tas ir iespējams?

Laiks ziņojumu sagatavoÅ”anai Excel strauji beidzas — tendence uz ērtām informācijas prezentācijas un analÄ«zes rÄ«ku izmantoÅ”anu ir redzama visās jomās. Mēs jau sen esam apsprieduÅ”i digitālo pāreju ziņojumu sagatavoÅ”anā un izvēlējāmies vizualizācijas un self-service analÄ«tikas sistēmu Tableau. Aleksandrs Bezugļijs, analÄ«tisko risinājumu un ziņojumu nodaļas vadÄ«tājs Grupā "M.Viedo-Eldorado", pastāstÄ«ja par pieredzi un rezultātiem cīņas paneļa izstrādē.

Saku uzreiz, ka ne viss, kas tika ieplānots, izdevās Ä«stenot, bet pieredze bija interesanta, ceru, ka tā bÅ«s noderÄ«ga arÄ« jums. Un, ja kādam ir idejas, kā to varēja izdarÄ«t labāk – būŔu ļoti pateicÄ«gs par ieteikumiem un idejām.

Tableau mazumtirdzniecībā, vai tas ir iespējams?

Zemāk ir par to, ar ko mēs saskārāmies un ko uzzinājām.

Ar ko mēs sākām

Grupā "M.Viedo-Eldorado" ir labi izstrādāta datu modelis: strukturēta informācija ar nepiecieÅ”amo uzglabāŔanas dziļumu un milzÄ«gs skaits fiksētās formas ziņojumu (skat. sÄ«kāk Å”ajā rakstā). No tiem analÄ«tiÄ·i veido vai nu kopsavilkuma tabulas vai formatētas izsÅ«tīŔanas Excel, vai skaistas prezentācijas PowerPoint galalietotājiem.

Aptuveni pirms diviem gadiem, vietā fiksētās formas ziņojumu, mēs sākām izveidot analÄ«tiskos ziņojumus SAP Analysis (pārslēgums uz Excel, bÅ«tÄ«bā — kopsavilkuma tabula pār OLAP dzinēju). Bet Å”is rÄ«ks nevarēja nodroÅ”ināt visu lietotāju vajadzÄ«bas, lielākā daļa turpināja izmantot informāciju, papildus apstrādātu analÄ«tiÄ·u.

Mūsu galalietotāji tiek iedalīti trīs kategorijās:

Augstākā vadība. Pieprasa informāciju labi noformētā un vizuāli saprotamā veidā.

Vidējā vadÄ«ba, progresÄ«vi lietotāji. Interesē dati un spēj patstāvÄ«gi veidot ziņojumus, ja rÄ«ki ir pieejami. TieÅ”i viņi kļuva par galvenajiem analÄ«tisko ziņojumu lietotājiem SAP Analysis.

Masas lietotāji. Neinteresē paÅ”pārvalde datu analÄ«zē, izmanto ziņojumus ar ierobežotu brÄ«vÄ«bas pakāpi, izsÅ«tīŔanas un kopsavilkuma tabulu formātā Excel.

MÅ«su ideja bija apmierināt visu lietotāju vajadzÄ«bas un sniegt viņiem vienotu ērtu rÄ«ku. Sākām ar augstākā lÄ«meņa vadÄ«bu. Viņiem bija nepiecieÅ”amas ērtas sadaļas, lai analizētu galvenos biznesa rezultātus. Tādējādi mēs sākām ar Tableau un sākumā izvēlējāmies divus virzienus: pārdoÅ”anas rādÄ«tājus mazumtirdzniecÄ«bā un tieÅ”saistē ar ierobežotu analÄ«zes dziļumu un platumu, kas aptvertu aptuveni 80% datu, ko pieprasÄ«ja augstākā vadÄ«ba.

Tā kā paneļu lietotāji bija augstākā lÄ«meņa vadÄ«ba, radās vēl viens papildu produkta KPI – atbildes ātrums. Neviens negaidÄ«s 20–30 sekundes, kamēr dati tiek atjaunināti. Navigācijai bija jābÅ«t 4–5 sekunžu ietvaros, vēlams vispār uzreiz. Un to mums, diemžēl, neizdevās panākt.

Tā izskatījās mūsu galvenā paneļa makets:

Tableau mazumtirdzniecībā, vai tas ir iespējams?

Galvenā ideja ir apvienot galvenos KPI dzinējus, kuru beigās uzkrājās 19, kreisajā pusē un attēlot to dinamiku un sadalÄ«jumu pa galvenajiem atribÅ«tam labajā pusē. Uzdevums Ŕķiet vienkārÅ”s, vizualizācija ir loÄ£iska un saprotama, lÄ«dz nonāc pie detaļām.

Detaļa 1. Datu apjoms

Galvenā pārdoÅ”anas tabula par gadu ir apmēram 300 miljoni rindu. Tā kā ir nepiecieÅ”ams atspoguļot dinamiku salÄ«dzinājumā ar iepriekŔējiem gadiem, faktisko pārdoÅ”anas datu apjoms ir apmēram 1 miljards rindu. Turklāt atseviŔķi tiek glabāta informācija par plānu datiem un interneta pārdoÅ”anas bloks. Tādēļ, pat neskatoties uz to, ka mēs izmantojām kolonnveida in-memory DB SAP HANA, pieprasÄ«juma ātrums ar visiem rādÄ«tājiem par vienu nedēļu no esoÅ”ajiem krājumiem uz lido jau bija ap 15-20 sekundēm. Å Ä«s problēmas risinājums ir acÄ«mredzams – papildu datu materializācija. Bet tajā arÄ« ir slēptie riski, par kuriem runāŔu zemāk.

Detaļa 2. Neaditīvie rādītāji

Mums daudzi KPI ir saistÄ«ti ar čekiem. Un Å”is rādÄ«tājs atspoguļo COUNT DISTINCT rindu (čeku virsrakstu) skaitu un rāda atŔķirÄ«gas summas atkarÄ«bā no izvēlētajiem atribÅ«tiem. Piemēram, kā Å”im rādÄ«tājam un tā atvasinājumam bÅ«tu jātiek aprēķināti:

Tableau mazumtirdzniecībā, vai tas ir iespējams?

Lai nodroÅ”inātu aprēķinu precizitāti, var:

  • Veikt Ŕādu rādÄ«tāju aprēķināŔanu uz vietas datu krātuvē;
  • Veikt aprēķinu uz visa datu apjoma Tableau, t.i., pēc pieprasÄ«juma Tableau atdot visus datus, ņemot vērā izvēlētos filtrus čekāņu pozÄ«ciju granularitātē;
  • Izveidot materializētu vitrÄ«nu, kurā tiks aprēķināti visi rādÄ«tāji visos izvēles variantos, kas sniedz atŔķirÄ«gus neaditÄ«vus rezultātus.

Ir skaidrs, ka piemērā UTE1 un UTE2 ir materiāla atribÅ«ti, kas attēlo preču hierarhiju. Tas nav statisks jēdziens, caur to notiek vadÄ«ba iekŔējā uzņēmumā, jo par dažādām preču grupām atbild dažādi menedžeri. Mums ir bijusi liela globāla Ŕīs hierarhijas pārskatīŔana, kad mainÄ«jās visi lÄ«meņi, kad tika pārskatÄ«tas savstarpējās attiecÄ«bas, kā arÄ« regulāras punktveida izmaiņas, kad viena grupa pāriet no viena mezgla uz citu. Parastajā pārskatā tas viss tiek aprēķināts uz vietas no materiāla atribÅ«tiem, bet, ja Å”os datus materializē, ir nepiecieÅ”ams izstrādāt mehānismu, lai izsekotu Ŕādas izmaiņas un automātiski atjaunotu vēsturiskos datus. Tas ir ļoti sarežģīts uzdevums.

Detaļas 3. Datu salīdzināŔana

Å is punkts ir lÄ«dzÄ«gs iepriekŔējam. Jēga ir tāda, ka uzņēmumā, analizējot, ir pieņemts izveidot vairākus salÄ«dzināŔanas lÄ«meņus ar iepriekŔējo periodu:

SalÄ«dzināŔana ar iepriekŔējo periodu (diena pret dienu, nedēļa pret nedēļu, mēnesis pret mēnesi)

Å ajā salÄ«dzinājumā tiks pieņemts, ka, atkarÄ«bā no lietotāja izvēlētā perioda (piemēram, 33. gada nedēļa), mums jāparāda dinamika pret 32. nedēļu. Ja mēs izvēlētos datus par mēnesi, piemēram, maiju, tad Å”is salÄ«dzinājums parādÄ«tu dinamiku pret aprÄ«li.

SalÄ«dzināŔana ar iepriekŔējo gadu

Å eit galvenais nianses ir tajā, ka, salÄ«dzinot pa dienām un nedēļām, jÅ«s neņemiet to paÅ”u dienu iepriekŔējā gadā, t.i., jÅ«s nevarat vienkārÅ”i ņemt paÅ”reizējo gadu mÄ«nus viens. Jums ir jāpievērÅ”as salÄ«dzinātajai nedēļas dienai. Bet, salÄ«dzinot mēneÅ”us, pretēji, ir jāņem tieÅ”i tāds pats kalendāra dienas iepriekŔējā gadā. Ir arÄ« nianses ar izslēgtu gadiem. Avota krātuvēs visa informācija ir sadalÄ«ta pa dienām, tur nav atseviŔķu lauku nedēļām, mēneÅ”iem, gadiem. Tāpēc, lai iegÅ«tu pilnÄ«gu analÄ«tisko pārskatu panelÄ«, nav jārēķina viens periods, piemēram, nedēļa, bet 4 nedēļas, un pēc tam Å”os datus vēl ir jāsalÄ«dzina, atspoguļojot dinamiku, novirzes. AttiecÄ«gi Å”o dinamiskās salÄ«dzināŔanas loÄ£iku var realizēt vai nu Tableau, vai uz vitrÄ«nas puses. Jā, un par Ŕīm detaļām mēs, protams, zinājām un domājām vēl projektēŔanas posmā, bet to ietekmi uz gala paneļa veiktspēju prognozēt bija grÅ«ti.

Datu paneļa ievieÅ”anā mēs gājām pa garu Agile ceļu. MÅ«su uzdevums bija pēc iespējas ātrāk nodroÅ”ināt testēŔanai strādājoÅ”u rÄ«ku ar nepiecieÅ”amajiem datiem. Tāpēc mēs devāmies sprintos un balstÄ«jāmies uz paÅ”reizējā krātuves darba minimizāciju.

1. daļa. Ticība Tableau

Lai vienkārÅ”otu IT atbalstu un ātri ieviestu izmaiņas, mēs pieņēmām lēmumu izstrādāt neadditÄ«vo rādÄ«tāju aprēķina un iepriekŔējo periodu salÄ«dzināŔanas loÄ£iku Tableau.

1. posms. Viss ir Live, nekādas papildināŔanas vitrīnām.

Å ajā posmā mēs pievienojām Tableau esoÅ”ajiem vitrÄ«nām un nolēmām apskatÄ«t, kā tiks aprēķināts čeku skaits gada laikā.

Rezultāts:

Atbilde bija nomācoÅ”a – 20 minÅ«tes. Datu pārsÅ«tīŔana pa tÄ«klu, augsta slodze uz Tableau. Mēs sapratām, ka loÄ£iku ar neadditÄ«vajiem rādÄ«tājiem ir jārealizē uz HANA. MÅ«s tas nebaidÄ«ja, mums jau bija lÄ«dzÄ«ga pieredze ar BO un Analysis un bÅ«vēt ātras vitrÄ«nas HANA, kas sniedz pareizi aprēķinātus neadditÄ«vos rādÄ«tājus, mēs pratām. Tagad bija jāsaskaņo tās ar Tableau.

2. posms. Pielāgojam vitrīnas, nekādas materializācijas, viss uz vietas.

Mēs izveidojām atseviŔķu jaunu vitrÄ«nu, kas uzreiz sniedza nepiecieÅ”amos datus TABLEAU. Kopumā mēs ieguvām labu rezultātu, samazinot visu rādÄ«tāju Ä£enerēŔanas laiku no nedēļas lÄ«dz 9-10 sekundēm. GodÄ«gi skatoties, gaidÄ«jām, ka Tableau atbildes laiks visā dēlÄ« bÅ«s 20-30 sekundes pirmajā atvērÅ”anā un pēc tam, pateicoties keÅ”atmiņai, no 10 lÄ«dz 12 sekundēm, kas mÅ«s kopumā apmierinātu.

Rezultāts:

Pirmajās atvērtajās dēlī: 4-5 minūtes
Ikviens klikŔķis: 3-4 minūtes
Neviens negaidīja Ŕādu papildu uzlabojumu vitrīnas darbā.

2. daļa. IedziļināŔanās Tableau

1. posms. Tableau veiktspējas analīze un ātra tuning

Mēs sākām analizēt, uz ko Tableau tērē galveno laiku. Un tam ir patieŔām labi rÄ«ki, kas, protams, ir plus Tableau. Galvenā problēma, ko mēs identificējām, bija ļoti sarežģīti SQL vaicājumi, kurus bÅ«vēja Tableau. Tie bija saistÄ«ti galvenokārt ar:

— datu transponēŔanu. Tā kā Tableau nav rÄ«ku datasetu transponēŔanai, tad, lai izveidotu kreiso dēļa daļu ar detalizētu visu KPI attēloÅ”anu, mums bija jāveido tabula, izmantojot case. SQL vaicājumu izmērs DB sasniedza 120 000 rakstzÄ«mes.

Tableau mazumtirdzniecībā, vai tas ir iespējams?

— laika perioda izvēli. Šāds vaicājums DB lÄ«menÄ« prasÄ«ja vairāk laika kompilācijai nekā izpildei:

Tableau mazumtirdzniecībā, vai tas ir iespējams?

T.i., vaicājuma apstrāde 12 sekundes + 5 sekundes izpilde.

Mēs nolēmām vienkārÅ”ot aprēķinu loÄ£iku Tableau pusē un pārcelt vēl vienu daļu aprēķinu uz vitrÄ«nu un DB lÄ«meni. Tas deva labus rezultātus.

Vispirms mēs veicām transponēŔanu uz vietas, izmantojot pilnu ārējo saiti gala VIEW aprēķina posmā, saskaņā ar Ŕādu pieeju, kas aprakstÄ«ta wiki Transpose — Vikipēdija, brÄ«vā enciklopēdija un Elementary matrix — Vikipēdija, brÄ«vā enciklopēdija.

Tableau mazumtirdzniecībā, vai tas ir iespējams?

Tātad mēs izveidojām konfigurācijas tabulu – transponēŔanas matricu (21x21) un saņēmām visus rādÄ«tājus rindu sadalÄ«jumā.

Bija:
Tableau mazumtirdzniecībā, vai tas ir iespējams?

Kļuva par:
Tableau mazumtirdzniecībā, vai tas ir iespējams?

Datu transponēŔana gandrÄ«z neprasa laiku. PieprasÄ«jums pēc visiem rādÄ«tājiem nedēļas laikā joprojām tika izpildÄ«ts aptuveni 10 sekunžu laikā. Taču tagad ir zaudēta elastÄ«ba attiecÄ«bā uz konkrēto rādÄ«tāju paneļa izveidi, t.i., paneļa labajā pusē, kur attēlota dinamika un detalizēta konkrēta rādÄ«tāja sadalÄ«jums, iepriekÅ” skatÄ«jums strādāja 1-3 sekundes, jo pieprasÄ«jums tika veikts pēc viena rādÄ«tāja, bet tagad datubāze vienmēr atlasÄ«ja visus rādÄ«tājus un filtrēja rezultātu tikai pirms to atgrieÅ”anas Tableau.

Kopumā paneļa darbības ātrums samazinājās gandrīz trīs reizes.

Rezultāts:

  1. 5 sek — paneļa un vizualizāciju parsēŔana
  2. 15-20 sek — sagatavoÅ”ana pieprasÄ«jumu kompilācijai ar iepriekŔējo aprēķinu veikÅ”anu Tableau
  3. 35-45 sek — SQL pieprasÄ«jumu kompilācija un tajā paŔā laikā to secÄ«ga izpilde Hana
  4. 5 sek — rezultātu apstrāde, ŔķiroÅ”ana, vizualizāciju pārskaitīŔana Tableau
  5. Protams, Ŕādi rezultāti negāja pie sirds biznesam, tāpēc turpinājām optimizāciju.

Posms 2. Minimāla loģika Tableau, pilnīga materializācija

Mēs sapratām, ka nav iespējams izveidot paneļa atbildes laiku dažu sekunžu laikā, ja skatÄ«jums darbojas 10 sekundes, un apsvērām datu materializācijas iespējas datubāzes pusē tieÅ”i prasÄ«tajam panelim. Bet mums bija jārisina globāla problēma, kā minēts iepriekÅ” – neaditÄ«vi rādÄ«tāji. Mēs nevarējām izveidot tā, lai mainot filtrus vai izkliedes Tableau elastÄ«gi pārslēgtos starp dažādiem skatÄ«jumiem un lÄ«meņiem, kas iepriekÅ” aprēķināti dažādām produktu hierarhijām (piemērā trÄ«s pieprasÄ«jumi bez UTE, ar UTE1 un UTE2 veido atŔķirÄ«gus rezultātus). Tāpēc mēs pieņēmām lēmumu vienkārÅ”ot paneli, atteikties no produktu hierarhijas panelÄ« un noskaidrot, cik ātrs tas var bÅ«t vienkārÅ”otā versijā.

Tātad, Å”ajā pēdējā posmā mēs izveidojām atseviŔķu krātuvi, kurā transponētā veidā saglabājām visus KPI. Datubāzes pusē jebkuram pieprasÄ«jumam uz Ŕādu krātuvi tiek izpildÄ«ts 0,1 – 0,3 sekunžu laikā. PanelÄ« mēs saņēmām Ŕādus rezultātus:

Pirmais atklājums: 8-10 sekundes
Jebkura klikŔķis: 6-7 sekundes

Laiks, ko tērē Tableau, sastāv no:

  1. 0,3 sek. — paneļa parsēŔana un SQL pieprasÄ«jumu kompilācija
  2. 1,5-3 sek. — SQL pieprasÄ«jumu izpilde Hana galvenajām vizualizācijām (sākas paralēli ar 1. punktu)
  3. 1,5-2 sek. — renderēŔana, vizualizāciju pārrēķināŔana
  4. 1,3 sek. — papildus SQL vaicājumu izpilde, lai iegÅ«tu atbilstoŔās filtru vērtÄ«bas (ZÄ«mols, DÄ«vizions, Pilsēta, Veikals), rezultātu parsēŔana

Ja jāizdara īss kopsavilkums

Mums patika instrumenta Tableau vizualizācijas aspektā. ProjektēŔanas posmā mēs aplÅ«kojām dažādus vizualizācijas elementus un visus tos atradām bibliotēkās, tostarp sarežģītas daudzslāņu segmentācijas un daudzpārraides waterfall.

IevieÅ”ot pārdoÅ”anas galvenos rādÄ«tājus, mēs saskārāmies ar veiktspējas problēmām, kuras pagaidām neesam spējuÅ”i novērst. Mēs pavadÄ«jām vairāk nekā divus mēneÅ”us un saņēmām funkcionāli nepilnÄ«gu paneļu, kuru reakcijas ātrums bija uz pieļaujamā robežas. Un mēs izdarÄ«jām secinājumus:

  1. Tableau nespēj strādāt ar lieliem datu apjomiem. Ja jÅ«su sākotnējā datu modelÄ« ir vairāk nekā 10 GB datu (aptuveni 200 milj. x 50 rindu), paneļa darbÄ«ba ievērojami palēninās — no 10 sekundēm lÄ«dz dažām minÅ«tēm katram klikŔķim. Mēs eksperimentējām gan ar tieÅ”o savienojumu, gan ar ekstraktu. DarbÄ«bas ātrums ir salÄ«dzināms.
  2. Ierobežojumi, izmantojot vairākas datu krātuves (datakomplekti). Nav iespējas standarta veidā norādÄ«t datu komplektu savstarpējās attiecÄ«bas. Ja izmantojat apvedceļu risinājumus datu komplektu savienojumam, tas bÅ«tiski atspoguļos veiktspēju. MÅ«su gadÄ«jumā mēs apsvēra variantu datu materializēŔanai katrā nepiecieÅ”amajā griezumā, un uz Å”iem materializētajiem datu komplektiem veikt pārlēkumus ar iepriekÅ” izvēlētiem filtriem – tas izrādÄ«jās neiespējami izdarÄ«t Tableau.
  3. Tableau nav iespējams izveidot dinamiskos parametrus. JÅ«s nevarat parametru, kas tiek izmantots datu komplekta filtrēŔanai ekstraktā vai tieÅ”ajā savienojumā, aizpildÄ«t ar citas izvēles rezultātu no datu komplekta vai cita SQL vaicājuma rezultāta, tikai natÄ«vo lietotāja ievadi vai konstantu.
  4. Ierobežojumi, kas saistīti ar paneļa izveidoŔanu ar OLAP|Kopsavilkuma tabulas elementiem.
    MSTR, SAP SAC, SAP Analysis, ja pievienojat datu kopu ziņojumam, visi objekti uz tā ir savstarpēji saistÄ«ti pēc noklusējuma. Tableau tam nav, saistÄ«bu jāiestata manuāli. Tas, iespējams, ir elastÄ«gāk, taču visiem mÅ«su vadÄ«bas paneļiem tas ir obligāts prasÄ«bas elements – tāpēc tas papildus palielina darba slodzi. Turklāt, ja veidojat saistÄ«tus filtrus, lai, piemēram, filtrējot reÄ£ionu, pilsētu saraksts tiktu ierobežots tikai uz Ŕī reÄ£iona pilsētām, jÅ«s uzreiz saskarsities ar secÄ«giem pieprasÄ«jumiem uz DB vai Ekstrahu, kas ievērojami palēnina vadÄ«bas paneli.
  5. RÅ«pÄ«bu ierobežojumi funkcijās. Ne par ekstraktu, ne par datu kopu no Live-connecta nevar veikt masveida pārveidojumus. To var izdarÄ«t caur Tableau Prep, bet tas ir papildu darba slogs un vēl viens instruments, kuru jāapgÅ«st un jātur. JÅ«s, piemēram, nevarat transponēt datus, izveidot savienojumu ar paÅ”iem sevi. Tas aizveras caur kolonnām vai lauka atseviŔķām pārveidoÅ”anām, kas jāizvēlas caur case vai if, un tas rada ļoti sarežģītus SQL pieprasÄ«jumus, kuros datubāze pavadÄ«s lielāko daļu laika, kompilējot pieprasÄ«juma tekstu. Å Ä«s instrumenta neelastÄ«bas bija jāsaraksta lÄ«meņa vitrÄ«nā, kas noved pie datu glabāŔanas sarežģījuma, papildu slodzēm un pārveidoÅ”anām.

Mēs neesam nolikuÅ”i krustu uz Tableau. Bet kā instrumentu, kas spēj veidot rÅ«pnieciskus vadÄ«bas paneļus un lÄ«dzekli, ar kura palÄ«dzÄ«bu var aizstāt un digitalizēt visu uzņēmuma korporatÄ«vās pārskatu sistēmas, Tableau netiek apsvērts.

Å obrÄ«d aktÄ«vi izstrādājam lÄ«dzÄ«gu vadÄ«bas paneli citā instrumentā un paralēli mēģinām pārskatÄ«t vadÄ«bas paneļa arhitektÅ«ru Tableau, lai to vēl vairāk atvieglotu. Ja kopiena bÅ«s ieinteresēta – pastāstÄ«sim par rezultātiem.

Tāpat gaidām jūsu idejas vai padomus par to, kā Tableau var būvēt ātrus vadības paneļus uz tik lieliem datu apjomiem, jo mums ir arī vietne, kur datu ir daudz vairāk nekā mazumtirdzniecībā.

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster