Netology toimetaja vestles BI meeskonna tiimijuhiga Pavel Sayapiniga, et arutada, milliseid ĂŒlesandeid lahendavad andmeinsenerid tema meeskonnas, milliseid tööriistu nad selleks kasutavad ning kuidas Ă”igesti valida tööriistade komplekti andmeĂŒlesannete lahendamiseks, sealhulgas ebatĂŒĂŒpilisteks. Pavel on Ă”petaja kursusel â».Â
Mida teevad andmeinsenerid Profi.ru-s
Profi.ru on teenus, mis aitab klientidel kohtuda erinevate valdkondade spetsialistidega. Teenuse andmebaasis on ĂŒle 900 000 spetsialisti 700 teenusevaldkonnas: Ă”petajad, remondimeistrid, treenerid, ilutöötajad, kunstnikud ja teised. IgapĂ€evaselt registreeritakse ĂŒle 10 000 uue tellimuse â kĂ”ik see genereerib umbes 100 miljonit sĂŒndmust pĂ€evas. Sellise andmehulkade korraldamine ei ole vĂ”imalik ilma professionaalsete andmeinsenerideta. Â
Ideaalis arendab andmeinsener andmete töötlemise kultuuri, mille kaudu ettevĂ”te saab lisakasumit vĂ”i vĂ€hendab kulusid. Ta toob ettevĂ”ttele vÀÀrtust, töötades meeskonnas ja olles oluline lĂŒli erinevate osaliste vahel â arendajatest kuni Ă€riaruande tarbijateni. Kuid igas ettevĂ”ttes vĂ”ivad ĂŒlesanded erineda, seetĂ”ttu vaatleme neid Profi.ru nĂ€itel.
Koguvad andmeid otsuste tegemiseks ja edastavad need lĂ”ppkasutajale â tippjuhtkonnale, tootejuhile, analĂŒĂŒtikuleÂ
Andmed peavad olema arusaadavad otsuste tegemiseks ja mugavad kasutamiseks. Ei ole vaja pingutada, et otsida kirjeldusi vÔi koostada keerulisi SQL-pÀringuid, mis vÔtavad arvesse paljusid erinevaid tegureid. Ideaalne olukord on selline, et kasutaja vaatab armatuurlauda ja on kÔigega rahul. Ja kui mingis perspektiivis andmeid napib, siis lÀheb ta andmebaasi ja saab kÔige lihtsama SQL-pÀringuga vajalikud andmed.

Andmekvaliteedi protsessi koht andmete ladustamise ĂŒldstruktuuris
Oluline osa on seletaval dokumentatsioonil andmete töötlemise kohta. See lihtsustab tööd nii andmeinsenerile (mida ei segata kĂŒsimustega) kui ka andmete kasutajale (kes saab ise leida vastused oma kĂŒsimustele). Profi.ru-s on sellised dokumendid kogutud sisemisele foorumile.
Mugavuse all mĂ”istetakse ka andmete saamise kiirus. Kiirus = kĂ€ttesaadavus ĂŒhes sammus, klĂ”psus â armatuurlaud. Kuid praktikas on kĂ”ik keerulisem.Â
Sama Tableau lĂ”ppkasutaja vaatepunktist ei vĂ”imalda kĂ”iki vĂ”imalikke mÔÔtmeid vĂ€lja tuua. Kasutaja jÀÀb rahule ainult nende filtritega, mis on loonud armatuurlaua arendaja. See loob kaks stsenaariumi:Â
- Arendaja loob armatuurlaudade jaoks mitu lĂ”iget â¶ lehtede arv suureneb oluliselt. See vĂ€hendab andmete kergesti kĂ€ttesaadavust: on keeruline mĂ”ista, kus miski asub.Â
- Arendaja loob ainult vĂ”tmelĂ”iked. Teabe leidmine on lihtsam, kuid vĂ€hem standardse lĂ”ike puhul tuleb siiski minna kas andmebaasi vĂ”i analĂŒĂŒtikute juurde. See mĂ”jutab samuti kergesti kĂ€ttesaadavust.Â
Kergesti kÀttesaadavus on lai mÔisted. See hÔlmab andmete olemasolu Ôiges vormis, teabe saamist armatuurlaudadelt ja vajalikke andmelÔike.
Koguvad andmeid kĂ”igist allikatest ĂŒhte kohta
Andmeallikad vĂ”ivad olla sisemised ja vĂ€limised. NĂ€iteks kellegi Ă€ri sĂ”ltub ilmateadetest, mida tuleb koguda ja salvestada, â vĂ€listest allikatest.Â
Teavet tuleb salvestada koos allika mÀÀratlemisega, et andmeid oleks lihtne leida. Profi.ru-s on see ĂŒlesanne lahendatud automatiseeritud dokumentatsiooni abil. Sisemiste andmeallikate dokumentatsiooniks kasutatakse YML-faile.
Loo armatuurlaudu
Andmete visualiseerimine tuleks teha professionaalses tööriistas â nĂ€iteks Tableau's.Â
Enamik otsuseid tehakse emotsionaalselt, â oluline on visuaalsus ja esteetika. Sama Excel visuaaliseerimiseks, muide, ei sobi vĂ€ga hĂ€sti: ei rahulda kĂ”iki andmete kasutajate vajadusi. NĂ€iteks toodete juht armastab sĂŒveneda numbritesse, kuid nii, et see oleks mugav. See vĂ”imaldab tal lahendada oma ĂŒlesandeid, mitte mĂ”elda, kuidas teavet saada ja meetrikat koguda.
Kvaliteetne andmete visualiseerimine vÔimaldab otsuseid kergemini ja kiiremini vastu vÔtta.
Â
Mida kĂ”rgemal ametikohal inimene on, seda teravam on vajadus saada kĂ€epĂ€rast, telefonis, kokkuvĂ”tlikke andmeid. Ăksikasjad ei ole tippjuhtidele vajalikud â oluline on kontrollida ĂŒldiselt olukorda, ja BI on selleks hea tööriist.

NĂ€ide Profi.ru tootearmatuurlaudast (ĂŒks lehtedest). Teabe konfidentsiaalsuse eesmĂ€rgil on mÔÔtmete ja telgede nimed varjatud.
Reaalsete ĂŒlesannete nĂ€itedÂ
Ălesanne 1 - edastada andmed algsetest (operatiivsetest) sĂŒsteemidest andmete ladustamisse vĂ”i ETL-isse
Ăks rutiinsetest ĂŒlesannetest andmeinsenerile.Â
Selleks vÔib kasutada:
- enda kirjutatud skripte, mis запŃŃĐșаŃŃŃŃ cron'i kaudu vĂ”i spetsiaalse orkestreerija abil, nagu Airflow vĂ”i Prefect;Â
- avanenud koodi ETL-lahendusi: Pentaho Data Integration, Talend Data Studio ja teised;
- proprietaarseid lahendusi: Informatica PowerCenter, SSIS ja teised;
- pilvelahendusi: Matillion, Panoply ja teised.Â
Lihtsas tĂ€itmise korral lahendatakse ĂŒlesanne 20-realise YML-faili kirjutamisega. See vĂ”tab umbes 5 minutit.Â
KĂ”ige keerulisemas olukorras, kui on vaja lisada uus allikas - nĂ€iteks uus DB - vĂ”ib see vĂ”tta kuni mitu pĂ€eva.Â
Profi puhul on see lihtne ĂŒlesanne - korraliku protsessi korral - jĂ€rgmised sammud:
- Selgitada klientilt vÀlja, milliseid andmeid on vaja ja kus need asuvad.
- MÔista, kas nendele andmetele on juurdepÀÀs.
- Kui juurdepÀÀse ei ole, paluda administraatoritel neid.
- Lisada Git'i uus haru ĂŒlesande koodiga Jira's.
- Luua migratsioon andmete lisamiseks ankermudelisse interaktiivse Python-skripti kaudu.
- Lisada laadimisfailid (YML-fail, milles on kirjas, kust andmed pÀrinevad ja millisesse tabelisse need salvestatakse).
- Testida stendil.
- Laadida andmed hoidlasse.
- Luua pull request.
- LĂ€bi viia koodikontroll.
- PÀrast koodikontrolli sooritamist laaditakse andmed master-haru ja need laienevad automaatselt tootmisettevÔttesse (CI/CD).
Ălesanne 2 - laaditud andmete mugav paigutamine
Muu sagedane ĂŒlesanne - paigutada laaditud andmed nii, et lĂ”ppkasutajal (vĂ”i BI-tööriistal) oleks nendega mugav töötada ning ei tuleks teha liigseid toiminguid enamikku ĂŒlesandeid tĂ€itmiseks. Ehk ehitada vĂ”i uuendada Dimension Data Store (DDS).Â
Selleks vĂ”ib rakendada lahendusi 1. ĂŒlesandest, kuna tegemist on samuti ETL-protsessiga. KĂ”ige lihtsamas variandis uuendatakse DDS SQL-skripti abil.
Ălesanne 3 - ebatavaliste ĂŒlesannete hulgast
Profi-s tekib vooganalĂŒĂŒtika. Tootegruppidelt genereeritakse suur hulk sĂŒndmusi - kanname need ClickHouse'i. Kuid seal ei saa kahjuks kirjeid ĂŒkshaaval massiliselt sisestada, seega tuleb kirjed grupeerida. See tĂ€hendab, et otse kirjutada ei saa - vajalik on vahepealne töötleja.
Kasutame Apache Flinki pĂ”hinevat mootorit. Praegune tegevuste jĂ€rjekord on jĂ€rgmine: mootor töötleb saabuvaid sĂŒndmuste vooge â¶ kogub need ClickHouse'i partiidena â¶ arvutab igal hetkel sĂŒndmuste arvu 15 minuti jooksul â¶ edastab need teenusele, mis mÀÀrab, kas on anomaalia â vĂ”rdleb 15 minuti vÀÀrtusi 3 kuu sĂŒgavusega â¶ kui on, saadab hoiatuse Slacki.

Eesmine analĂŒĂŒsiskeem (osaline laadimine)
Apache Flinki raamistik tagab kohaletoimetamise vĂ€hemalt korra. Siiski on vĂ”imalus duplikaatide tekkimiseks. RabbitMQ puhul saab selle lahendada, kasutades Correlation ID-d. Sel juhul garanteeritakse ĂŒksik kohaletoimetamine â¶ andmete terviklikkus.
Arvutame sĂŒndmuste arvu taas Apache Flinki abil ning kuvame seda isetehtud armatuurlaudade kaudu, mis on kirjutatud NodeJS-is, + eesmine ReactJS-is. Kiire otsing ei leidnud sarnaseid lahendusi. Ja ise kood osutus lihtsaks â kirjutamine ei vĂ”tnud palju aega.
Monitooring on pigem tehniline. Vaatame anomaaliaid, et ennetada probleeme varastes etappides. MĂ”ned olulised globaalsed ettevĂ”tte mÔÔdikud ei kuulu hetkel monitooringusse, kuna voogude analĂŒĂŒsi suund on veel arengustaadiumis.
Peamised andmeinseneride tööriistad
Andmeinseneride ĂŒlesannete osas on suures osas selge, nĂŒĂŒd rÀÀgime natuke tööriistadest, mida nende lahendamiseks kasutatakse. Loomulikult vĂ”ivad tööriistad erinevates ettevĂ”tetes erineda (ja peavadki), sĂ”ltuvalt andmete mahust, nende saabumise kiirusest ja mitmekesisusest. Samuti vĂ”ib see sĂ”ltuda spetsialisti kalduvusest ĂŒhele tööriistale ainult selle tĂ”ttu, et ta on selle kallal töötanud ja tunneb seda hĂ€sti. Profi.ru-s otsustasime jĂ€rgmiste variantide kasuks â
Andmete visualiseerimiseks â Tableau, Metabase
Tableau valisime juba ammu. See sĂŒsteem vĂ”imaldab kiiresti analĂŒĂŒsida suuri andmemahtusid, samas ei nĂ”ua kulukat rakendamist. Meile on see mugav, ilus ja harjumuspĂ€rane â tihti töötame sellega.
Metabased teavad vĂ€hesed, kuid oma prototĂŒĂŒpide loomise jaoks on see vĂ€ga hea.Â
Visuaalitööri hulgast vĂ”ib mainida Airbnb Supersetit. Selle eripĂ€ra on paljusid andmebaaside ĂŒhendusi ja visualiseerimisvĂ”imalusi. KĂŒll aga on see keskmise kasutaja jaoks vĂ€hem mugav kui Metabase, kuna tabelite ĂŒhendamine ei ole vĂ”imalik, selleks tuleb luua eraldi esitlused.Â
Metabases saab tabelite ĂŒhendamist teha, isegi rohkemgi â teenus teeb seda automaatselt, arvestades andmebaasi skeemi. Ja Metabase liides on lihtsam ja meeldivam.
Tööriistu on palju â lihtsalt leidke oma.
Andmete salvestamiseks â ClickHouse, Vertica
ClickHouse on tasuta kiire tööriist tootearuannete salvestamiseks. AnalĂŒĂŒtikud teevad seal eraldi analĂŒĂŒtikat (kui neid andmeid piisab) vĂ”i andmeinsenerid vĂ”tavad kogumid ja laadivad need Verticasse, et luua aruandeid.
Vertica on Ă€ge ja mugav toode lĂ”pparuannete kuvamiseks.Â
Andmevoogude haldamiseks ja arvutuste tegemiseks â Airflow
Andmeid laadime lĂ€bi kĂ€surea tööriistade. NĂ€iteks MySQL-i kliendi kaudu, mis on palju kiirem.Â
KĂ€surea tööriistade plusspooleks on kiirus. Andmed ei liigu lĂ€bi sama Python-protsessi mĂ€lu. Miinusteks on vĂ€hem kontrolli andmete ĂŒle, mis ĂŒksteisest andmebaasi pĂ”hjustavad.
Peamine programmeerimiskeel on Python
Pythonil on oluliselt madalam sisenemisbarjÀÀr + ettevĂ”ttes on selle keele oskused. Teine pĂ”hjus â Airflow's kirjutatakse DAG-sid Pythonis. Need skriptid on lihtsalt laadimiste ĂŒmbrised, pĂ”hitegevus toimub lĂ€bi kĂ€sureas olevate skriptide.Â
Java't kasutame reaalajas analĂŒĂŒsi arendamiseks.
Andme-tööriistade valiku lĂ€henemine â mida teha, et mitte tekitada tehnoloogilist loomaaiad.
Turul on palju tööriistu andmetega töötamiseks igas etapis: nende tekkimisest kuni direktorite nĂ”ukogu dashboardile kuvamiseni. Pole ime, et mĂ”nes ettevĂ”ttes vĂ”ivad ilmneda mitmed mitteĂŒhendatud lahendused â nn tehnoloogiline loomaed.
Tehnoloogiline loomaed â need on tööriistad, mis tĂ€idavad samu funktsioone. NĂ€iteks Kafka ja RabbitMQ sĂ”numivahetuseks vĂ”i Grafana ja Zeppelin visualiseerimiseks.Â

â on nĂ€ha, kui palju dubleerivaid lahendusi vĂ”ib olla
Samuti saavad paljud eraisikud kasutada erinevaid ETL-tööriistu. Profi puhul on just selline olukord. Peamine ETL tööriist on Airflow, kuid mĂ”ned inimesed kasutavad oma isiklike ĂŒlesannete jaoks Pentahot. Nad testivad hĂŒpoteese ja nad ei pea neid andmeid inseneride kaudu lĂ€bima. Ăldiselt kasutavad "ise teenindamise" tööriistu pigem kogenud spetsialistid, kes tegelevad uurimistööga â uurivad uusi toote arendamise vĂ”imalusi. Nende analĂŒĂŒsiks vajalik andmestik on enamasti neile huvitav, lisaks muudetakse seda pidevalt. Sellega seoses pole mĂ”tet neid laadimisi pĂ”hiplatvormi lisada.Â
Tagasi loomaaeda. Tihti on korraga kasutatavate tehnoloogiate kasutamine seotud inimfaktoriga. Iseseisvad siseelamud on harjunud töötama mingi konkreetse tööriistaga, mida teine meeskond vĂ”ib-olla ei kasuta. Ja mĂ”nikord on autonoomia ainus tee eriliste ĂŒlesannete lahendamiseks. NĂ€iteks vajab R&D meeskond midagi testida teatud tööriistaga â see on lihtsalt mugav, keegi meeskonnast on seda juba kasutanud vĂ”i on olemas mĂ”ni muu pĂ”hjus. Oodata sĂŒsteemiadministraatoritelt, et see tööriist installida ja seadistada, on tĂŒlikas. Samuti peavad nutikad ja tĂ€helepanelikud administraatorid veel tĂ”estama, et see on tĂ”epoolest vajalik. Nii paigaldabki meeskond tööriista oma virtuaalmasinatesse ja lahendab oma spetsiifilised ĂŒlesanded.
Lahenduste loomaaed ei ole probleem, kui see ei nĂ”ua mĂ€rkimisvÀÀrseid sĂŒsteemiadministraatori tööjĂ”uressursse tööriista toetamiseks. Tuleb arvestada, kuidas tööriista kasutamine mĂ”jutab tugivahendeid.Â
Teine levinud pĂ”hjus uue tehnoloogia tekkimiseks on soov proovida tundmatut toodet tĂ€iesti uues valdkonnas, kus standardid pole veel vĂ€lja kujunenud vĂ”i pole vĂ€ljakujunenud soovitusi. Andmeinsener, nagu ka arendaja, peab alati uurima uusi tööriistu lootuses leida tĂ”husam lahendus praegustele ĂŒlesannetele vĂ”i olla kursis sellega, mida turg pakub.
Uusitehnoloogiate proovimise kiusatus on tĂ”eliselt suur. Kuid mĂ”istliku valiku tegemiseks on esmalt vaja enesedistsipliini. See aitab mitte lasta end tĂ€ielikult juhuslikest uurimisimpulssidest, vaid arvestada ettevĂ”tte vĂ”imalusi uue tööriista infrastruktuuri toetamiseks.Â
Tehnoloogiat ei tohiks kasutada ainult tehnoloogia pĂ€rast. Parim lĂ€henemine on pragmaatiline: ĂŒlesanne â¶ tööriistade komplekt, mis suudab selle ĂŒlesande lahendada.
 SeejĂ€rel tuleb hinnata igaĂŒht neid ja valida parim. NĂ€iteks see tööriist vĂ”ib ĂŒlesande efektiivsemalt lahendada, kuid selle kohta puuduvad kompetentsid, ja see on veidi vĂ€hem efektiivne, kuid ettevĂ”ttes on inimesi, kes teavad, kuidas sellega töötada. See tööriist on tasuline, kuid lihtne hooldada ja kasutada, aga see on populaarne avatud lĂ€htekoodiga, mille toetamiseks on vaja administraatoride meeskonda. Sellised vastandused tekivad, mille lahendamiseks on vajalik kĂŒlm mĂ”istus.
Tööriista valik on osaliselt usuhĂŒpe, osaliselt isiklik kogemus. Pole tĂ€ielikku kindlust, et tööriist sobib.
NĂ€iteks Profi alustas Pentahoga, kuna oli selle tööriista osas ekspertteadmised, kuid lĂ”puks osutus see ekslikuks valikuks. Pentaho siserepositoorium hakkas projekti kasvades tööprotsessi vĂ€ga aeglustama. Andmete salvestamiseks kulus minut, ja kui on harjumus pidevalt oma tööd salvestada, siis aeg voolas lihtsalt sĂ”rmede vahelt. Selle juurde lisandusid keerulised kĂ€ivitamised ja ajastatud ĂŒlesanded â arvuti hangus.Â
Kannatused lĂ”ppesid pĂ€rast ĂŒleminekut Airflow'le â populaarsele tööriistale, millel on suur kogukond.Â
Teenuse vĂ”i tööriista kogukonna olemasolu on oluline keeruliste ĂŒlesannete lahendamiseks â kolleegidelt saab nĂ”u kĂŒsida.
Kui ettevĂ”te on kĂŒps ja omab ressursse, tasub mĂ”elda tugiteenuse ostmisele. See aitab kiiresti probleeme lahendada ning saada soovitusi toote kasutamise kohta.
Valiku lÀhenemisviisi osas jÀrgib Profi jÀrgmisi pÔhimÔtteid:
- Ărge tehke otsust ĂŒksi. Kui inimene midagi valib, on ta automaatselt veendunud oma Ă”iguses. Teine asi on veenda teisi, kui on vajalik esitada tĂ”siseid argumente kaitseks. See aitab ka nĂ€ha tööriista nĂ”rkusi.
- Konsulteerida andmepealiku (vertikaalne dialoog). See vĂ”ib olla peamine andmeinsener (Chief Data Engineer) vĂ”i BI-meeskonna juht. Tipud nĂ€evad olukorda laiemalt.Â
- Suhelda teiste meeskondadega (horisontaalne dialoog). Milliseid tööriistu nad kasutavad ja kui edukalt. VĂ”ib-olla vĂ”ivad kolleegide tööriistad lahendada ka teie ĂŒlesanded, nii et ei pea looma lahenduste zoo.
Sisemised pÀdevused kui tÔhus asendus vÀlist teenusepakkujat
Tööriistade valiku lĂ€henemisviisiks vĂ”ib pidada ka ettevĂ”tte sisemiste oskuste kasutamist.Â
Tunneme sageli olukordi, kus ettevĂ”ttel on keeruline ĂŒlesanne, kuid raha selle elluviimiseks pole. Ălesanne on ulatuslik ja oluline ning pĂ”himĂ”tteliselt oleks kĂ”ige parem kaasata vĂ€line teenusepakkuja, kellel on vastav kogemus. Kuid kuna sellist vĂ”imalust (raha) pole, usaldatakse ĂŒlesanne sisemisele meeskonnale. Tavaliselt usaldab ettevĂ”te rohkem oma töötajaid, kui nad on juba oma tĂ”husust tĂ”estanud.
Selliste ĂŒlesannete nĂ€ideteks, kus uus suund areneb töötajate jĂ”ududega, on koormustestimise lĂ€biviimine ja andmehoidla loomine. Erakordselt andmehoidla, kuna see on iga ettevĂ”tte jaoks ainulaadne lugu. Andmehoidlat ei saa osta, seda saab ainult ehitada vĂ€liste spetsialistide abiga koos sisemeeskonna toega. Â
Muide, uue suuna arendamisel vÔib meeskond mÔista, et vajadus vÀlist teenusepakkujat vastu pole.
Profi puhul toimus BI rakendamine in-house. Peamine raskus seisnes selles, et ettevÔte soovis BI-d kiiresti kÀivitada. Kuid sellise projekti ehitamine nÔudis aega: pÀdevuste arendamine, andmete laadimine, mugava andmehoidla skeemi loomine, tööriistade valimine ja nende omandamine.
Peamine - kuum - faas, kui kĂ”ik ehitati ja kristalliseerus, kestis umbes aasta. Ja projekt areneb endiselt.Â
EttevĂ”tte andmehoidla ehitamisel on oluline jĂ€rgida kĂ”rgeid standardeid, kaitsta oma positsioone ja mitte teha asju kiirkorras Ă€ri huvides.Â
Suurte valudega tegime suure osa projektist uuesti, mille pidime siis kiiresti tegema.
 Kuid mĂ”nikord on kiirustamine otstarbekas. NĂ€iteks toote arenduses vĂ”ib see olla isegi ainus Ă”ige lĂ€henemine. Peame kiiresti edasi liikuma, katsetama toote hĂŒpoteese ja muud. Kuid andmehoidla peab pĂ”hinema tugeval arhitektuuril, vastasel juhul ei suuda see kiiresti kohanduda kasvava Ă€ri vajadustega ja projekt kukub lĂ€bi.
Selles keerulises projektis aitas meid vÀga meie juht, kes seisis tööde eest, selgitas juhtkonnale, mida me teeme, kaalus vÀlja ressursse ja kaitses meid. Ilma sellise toetuse ei ole ma kindel, et oleksime suutnud projekti kÀivitada.
Sellistes olukordades mĂ€ngivad olulist rolli nn varajased kasutajad â need, kes on valmis uut proovima â juhtide, analĂŒĂŒtikute, tootemeetodite vahel. Et toode saaks tĂ”usma, vajame teerajajaid, kes kinnitavad, et kĂ”ik töötab ja seda on mugav kasutada.
Kui keegi soovib jagada lahendust kolmandale ĂŒlesandele, siis olete teretulnud đ
Allikas: habr.com
