Groot en klein datatoetser: tendense, teorie, my storie

Hallo almal, my naam is Alexander, en ek is 'n Data Kwaliteit ingenieur wat data nagaan vir die kwaliteit daarvan. Hierdie artikel sal praat oor hoe ek hiertoe gekom het en waarom hierdie gebied van toetsing in 2020 op die kruin van 'n golf was.

Groot en klein datatoetser: tendense, teorie, my storie

Wêreldwye neiging

Vandag se wêreld beleef nog 'n tegnologiese revolusie, waarvan een aspek die gebruik van opgehoopte data deur allerhande maatskappye is om hul eie vliegwiel van verkope, winste en PR te bevorder. Dit blyk dat die teenwoordigheid van goeie (gehalte) data, sowel as vaardige breine wat geld daaruit kan maak (korrek verwerk, visualiseer, bou masjienleermodelle, ens.), vir baie vandag die sleutel tot sukses geword het. As 15-20 jaar gelede groot maatskappye hoofsaaklik betrokke was by intensiewe werk met data-akkumulasie en monetisering, is dit vandag die lot van byna alle gesonde mense.

In hierdie verband het alle portale wat toegewy is aan werksoek regoor die wêreld begin word met vakatures vir Data Scientists, aangesien almal seker was dat, nadat so 'n spesialis gehuur is, dit moontlik sou wees om 'n supermodel van masjienleer te bou. , voorspel die toekoms en voer 'n "kwantumsprong" vir die maatskappy. Met verloop van tyd het mense besef dat hierdie benadering byna nooit nêrens werk nie, aangesien nie al die data wat in die hande van sulke spesialiste val, geskik is vir opleidingsmodelle nie.

En versoeke van Data Scientists het begin: "Kom ons koop meer data van hierdie en daardie ...", "Ons het nie genoeg data nie ...", "Ons benodig nog data, verkieslik een van hoë gehalte ..." . Op grond van hierdie versoeke is daar begin om talle interaksies te bou tussen maatskappye wat die een of ander stel data besit. Dit het natuurlik die tegniese organisasie van hierdie proses vereis - om aan die databron te koppel, dit af te laai, te kontroleer dat dit volledig gelaai is, ens. Die aantal sulke prosesse het begin groei, en vandag het ons 'n groot behoefte aan 'n ander soort spesialiste - Data Kwaliteit ingenieurs - diegene wat die vloei van data in die stelsel (data pyplyne), die kwaliteit van data by die insette en uitset sal monitor, en gevolgtrekkings maak oor hul voldoende, integriteit en ander kenmerke.

Die neiging vir Data Kwaliteit-ingenieurs het na ons gekom van die VSA, waar, te midde van die woedende era van kapitalisme, niemand gereed is om die stryd om data te verloor nie. Hieronder het ek skermkiekies van twee van die gewildste werksoekwebwerwe in die VSA verskaf: www.monster.com и www.dice.com - wat data vanaf 17 Maart 2020 vertoon oor die aantal geposeerde vakatures wat ontvang is deur die sleutelwoorde: Data Quality and Data Scientist.

www.monster.com

Datawetenskaplikes – 21416 vakatures
Datakwaliteit – 41104 vakatures

Groot en klein datatoetser: tendense, teorie, my storie
Groot en klein datatoetser: tendense, teorie, my storie

www.dice.com

Datawetenskaplikes – 404 vakatures
Datakwaliteit – 2020 vakatures

Groot en klein datatoetser: tendense, teorie, my storie
Groot en klein datatoetser: tendense, teorie, my storie

Dit is duidelik dat hierdie beroepe geensins met mekaar meeding nie. Met skermkiekies wou ek net die huidige situasie op die arbeidsmark illustreer in terme van versoeke vir Data Kwaliteit ingenieurs, van wie baie meer nou nodig is as Data Scientists.

In Junie 2019 het EPAM, gereageer op die behoeftes van die moderne IT-mark, Data Quality in 'n aparte praktyk geskei. Datakwaliteit-ingenieurs, in die loop van hul daaglikse werk, bestuur data, kontroleer die gedrag daarvan in nuwe toestande en stelsels, monitor die relevansie van die data, die voldoende en relevansie daarvan. Met dit alles, in 'n praktiese sin, wy Data Kwaliteit-ingenieurs werklik min tyd aan klassieke funksionele toetsing, MAAR dit hang grootliks af van die projek (ek sal 'n voorbeeld hieronder gee).

Die verantwoordelikhede van 'n Data Kwaliteit ingenieur is nie net beperk tot roetine handmatige/outomatiese kontroles vir "null, tellings en somme" in databasistabelle nie, maar vereis 'n diepgaande begrip van die kliënt se besigheidsbehoeftes en dienooreenkomstig die vermoë om beskikbare data in nuttige besigheidsinligting.

Datakwaliteitteorie

Groot en klein datatoetser: tendense, teorie, my storie

Om die rol van so 'n ingenieur meer volledig voor te stel, laat ons uitvind wat datakwaliteit in teorie is.

Datakwaliteit — een van die stadiums van Databestuur ('n hele wêreld wat ons vir jou sal laat om op jou eie te bestudeer) en is verantwoordelik vir die ontleding van data volgens die volgende kriteria:

Groot en klein datatoetser: tendense, teorie, my storie
Ek dink dit is nie nodig om elkeen van die punte te ontsyfer nie (in teorie word hulle "data-dimensies" genoem), hulle is redelik goed beskryf in die prentjie. Maar die toetsproses self impliseer nie dat hierdie kenmerke streng na toetsgevalle kopieer en dit nagegaan word nie. In Datakwaliteit, soos in enige ander tipe toetsing, is dit eerstens nodig om voort te bou op die datakwaliteitvereistes waarop ooreengekom is met die projekdeelnemers wat sakebesluite neem.

Afhangende van die Data Kwaliteit-projek, kan 'n ingenieur verskillende funksies verrig: van 'n gewone outomatiseringstoetser met 'n oppervlakkige assessering van datakwaliteit, tot 'n persoon wat diepgaande profilering van die data volgens bogenoemde kriteria doen.

'n Baie gedetailleerde beskrywing van die databestuur, datakwaliteit en verwante prosesse word goed beskryf in die boek genaamd "DAMA-DMBOK: Data Management Body of Knowledge: 2de Uitgawe". Ek beveel hierdie boek sterk aan as 'n inleiding tot hierdie onderwerp (jy sal 'n skakel daarna aan die einde van die artikel vind).

My storie

In die IT-industrie het ek my pad opgewerk van 'n Junior toetser in produkmaatskappye tot 'n Lead Data Quality Engineer by EPAM. Na ongeveer twee jaar se werk as 'n toetser, het ek die vaste oortuiging gehad dat ek absoluut alle tipe toetse gedoen het: regressie, funksioneel, stres, stabiliteit, sekuriteit, UI, ens. - en het 'n groot aantal toetsinstrumente probeer, met het terselfdertyd in drie programmeertale gewerk: Java, Scala, Python.

As ek terugdink, verstaan ​​ek hoekom my vaardighede so uiteenlopend was—ek was betrokke by datagedrewe projekte, groot en klein. Dit is wat my in 'n wêreld van baie gereedskap en geleenthede vir groei gebring het.

Om die verskeidenheid gereedskap en geleenthede te waardeer om nuwe kennis en vaardighede op te doen, kyk net na die prent hieronder, wat die gewildstes in die "Data & KI"-wêreld wys.

Groot en klein datatoetser: tendense, teorie, my storie
Hierdie soort illustrasie word jaarliks ​​saamgestel deur een van die bekende waagkapitaliste Matt Turck, wat van sagteware-ontwikkeling kom. Hier skakel na sy blog en waagkapitaalfirma, waar hy as vennoot werk.

Ek het veral vinnig professioneel gegroei toe ek die enigste toetser op die projek was, of ten minste aan die begin van die projek. Dit is op so 'n oomblik dat jy verantwoordelik moet wees vir die hele toetsproses, en jy het geen geleentheid om terug te trek nie, net vorentoe. Aanvanklik was dit skrikwekkend, maar nou is al die voordele van so 'n toets vir my duidelik:

  • Jy begin om met die hele span te kommunikeer soos nog nooit tevore nie, aangesien daar geen proxy vir kommunikasie is nie: nie die toetsbestuurder of medetoetsers nie.
  • Die onderdompeling in die projek word ongelooflik diep, en jy het inligting oor alle komponente, beide in die algemeen en in detail.
  • Ontwikkelaars kyk nie na jou as "daardie ou van toetsing wat nie weet wat hy doen nie", maar eerder as 'n gelyke wat ongelooflike voordele vir die span inhou met sy outomatiese toetse en afwagting van foute wat in 'n spesifieke komponent van die produk.
  • As gevolg hiervan is jy meer effektief, meer gekwalifiseerd en meer in aanvraag.

Soos die projek gegroei het, het ek in 100% van gevalle 'n mentor vir nuwe toetsers geword, hulle geleer en die kennis wat ek self geleer het, oorgedra. Terselfdertyd, afhangende van die projek, het ek nie altyd die hoogste vlak van outotoetsspesialiste van bestuur ontvang nie en daar was 'n behoefte om hulle óf in outomatisering op te lei (vir diegene wat belangstel) óf gereedskap te skep vir gebruik in alledaagse aktiwiteite (gereedskap) vir die generering van data en die laai daarvan in die stelsel , 'n hulpmiddel vir die uitvoering van lastoetsing/stabiliteitstoetsing "vinnig", ens.).

Voorbeeld van 'n spesifieke projek

Ongelukkig kan ek weens nie-openbaarmakingsverpligtinge nie in detail praat oor die projekte waaraan ek gewerk het nie, maar ek sal voorbeelde gee van tipiese take van 'n Data Kwaliteit Ingenieur op een van die projekte.

Die essensie van die projek is om 'n platform te implementeer vir die voorbereiding van data vir opleiding van masjienleermodelle wat daarop gebaseer is. Die kliënt was 'n groot farmaseutiese maatskappy uit die VSA. Tegnies was dit 'n cluster Kubernetes, styg tot AWS EC2 gevalle, met verskeie mikrodienste en die onderliggende oopbronprojek van EPAM - Legion, aangepas by die behoeftes van 'n spesifieke kliënt (nou is die projek hergebore in odahu). ETL-prosesse is georganiseer deur gebruik te maak van Apache lugvloei en geskuif data van Sales Force kliënt stelsels in AWS S3 Emmers. Vervolgens is 'n Docker-beeld van 'n masjienleermodel op die platform ontplooi, wat op vars data opgelei is en, met behulp van die REST API-koppelvlak, voorspellings opgelewer het wat vir die besigheid van belang was en spesifieke probleme opgelos het.

Visueel het alles so gelyk:

Groot en klein datatoetser: tendense, teorie, my storie
Daar was baie funksionele toetse op hierdie projek, en gegewe die spoed van kenmerkontwikkeling en die behoefte om die pas van die vrystellingsiklus (twee weke naellope) te handhaaf, was dit nodig om dadelik te dink aan die outomatisering van toetsing van die mees kritieke komponente van die sisteem. Die meeste van die Kubernetes-gebaseerde platform self is gedek deur outotoetse wat in Robot raamwerk + Python, maar dit was ook nodig om dit te ondersteun en uit te brei. Daarbenewens, vir die gerief van die kliënt, is 'n GUI geskep om masjienleermodelle te bestuur wat na die groepering ontplooi is, sowel as die vermoë om te spesifiseer waar en waar data oorgedra moet word vir die opleiding van die modelle. Hierdie uitgebreide toevoeging het 'n uitbreiding van outomatiese funksionele toetse behels, wat meestal gedoen is deur REST API-oproepe en 'n klein aantal eind-2-einde UI-toetse. Om die ewenaar van al hierdie beweging het 'n handtoetser by ons aangesluit wat uitstekende werk gedoen het met aanvaardingstoetsing van produkweergawes en met die kliënt gekommunikeer oor die aanvaarding van die volgende vrystelling. Boonop kon ons, as gevolg van die aankoms van 'n nuwe spesialis, ons werk dokumenteer en verskeie baie belangrike handkontroles byvoeg wat moeilik was om dadelik te outomatiseer.

En uiteindelik, nadat ons stabiliteit vanaf die platform en die GUI-byvoeging daaroor verkry het, het ons begin met die bou van ETL-pyplyne met behulp van Apache Airflow DAG's. Outomatiese datakwaliteitkontrolering is uitgevoer deur spesiale Airflow DAG's te skryf wat die data gekontroleer het op grond van die resultate van die ETL-proses. As deel van hierdie projek was ons gelukkig en die kliënt het ons toegang gegee tot anonieme datastelle waarop ons getoets het. Ons het die data reël vir reël nagegaan vir voldoening aan tipes, die teenwoordigheid van gebroke data, die totale aantal rekords voor en na, vergelyking van transformasies gemaak deur die ETL-proses vir samevoeging, die verandering van kolomname en ander dinge. Daarbenewens is hierdie tjeks afgeskaal na verskillende databronne, byvoorbeeld, benewens SalesForce, ook na MySQL.

Finale datakwaliteitkontroles is reeds op die S3-vlak uitgevoer, waar dit gestoor is en gereed was om te gebruik vir die opleiding van masjienleermodelle. Om data van die finale CSV-lêer wat op die S3-emmer geleë is te verkry en dit te valideer, is kode geskryf deur gebruik te maak van boto3 kliënte.

Daar was ook 'n vereiste van die kliënt om 'n deel van die data in een S3 Emmer te stoor en 'n deel in 'n ander. Dit het ook vereis dat bykomende tjeks geskryf word om die betroubaarheid van sodanige sortering na te gaan.

Algemene ervaring van ander projekte

'n Voorbeeld van die mees algemene lys aktiwiteite van 'n Datakwaliteit-ingenieur:

  • Berei toetsdata voor (geldige ongeldige groot klein) deur 'n outomatiese hulpmiddel.
  • Laai die voorbereide datastel op na die oorspronklike bron en maak seker dat dit gereed is vir gebruik.
  • Begin ETL-prosesse vir die verwerking van 'n stel data vanaf die bronberging na die finale of intermediêre berging deur 'n sekere stel instellings te gebruik (indien moontlik, stel konfigureerbare parameters vir die ETL-taak).
  • Verifieer data wat deur die ETL-proses verwerk word vir die kwaliteit en voldoening aan besigheidsvereistes.

Terselfdertyd moet die hooffokus van kontroles nie net op die feit wees dat die datavloei in die stelsel in beginsel gewerk het en voltooiing bereik het (wat deel is van funksionele toetsing), maar meestal op die kontrolering en validering van data vir voldoening aan verwagte vereistes, identifisering van afwykings en ander dinge.

Tools

Een van die tegnieke vir sulke databeheer kan die organisasie van kettingkontroles in elke stadium van dataverwerking wees, die sogenaamde “dataketting” in die literatuur - beheer van data vanaf die bron tot die punt van finale gebruik. Hierdie tipe tjeks word meestal geïmplementeer deur kontrole-SQL-navrae te skryf. Dit is duidelik dat sulke navrae so liggewig as moontlik moet wees en individuele stukke datakwaliteit moet kontroleer (metadata van tabelle, leë reëls, NULL'e, Foute in sintaksis - ander eienskappe wat nodig is vir kontrolering).

In die geval van regressietoetsing, wat klaargemaakte (onveranderbare, effens veranderbare) datastelle gebruik, kan die outotoetskode klaargemaakte sjablone stoor om data te kontroleer vir voldoening aan kwaliteit (beskrywings van verwagte tabelmetadata; ryvoorbeeldobjekte wat kan wees lukraak gekies tydens die toets, ens.).

Tydens toetsing moet u ook ETL-toetsprosesse skryf met behulp van raamwerke soos Apache Airflow, Apache Spark of selfs 'n swart-boks wolk tipe hulpmiddel GCP Dataprep, GCP Datavloei En so aan. Hierdie omstandigheid dwing die toetsingenieur om hom in die beginsels van werking van bogenoemde gereedskap te verdiep en selfs meer effektief beide funksionele toetsing uit te voer (byvoorbeeld bestaande ETL-prosesse op 'n projek) en dit te gebruik om data na te gaan. Apache Airflow het veral gereedgemaakte operateurs om byvoorbeeld met gewilde analitiese databasisse te werk GCP BigQuery. Die mees basiese voorbeeld van die gebruik daarvan is reeds uiteengesit hier, so ek sal myself nie herhaal nie.

Behalwe klaargemaakte oplossings, verbied niemand jou om jou eie tegnieke en gereedskap te implementeer nie. Dit sal nie net voordelig wees vir die projek nie, maar ook vir die Data Kwaliteit Ingenieur self, wat sodoende sy tegniese horisonne en koderingsvaardighede sal verbeter.

Hoe dit werk op 'n regte projek

'n Goeie illustrasie van die laaste paragrawe oor die "dataketting", ETL en alomteenwoordige tjeks is die volgende proses van een van die werklike projekte:

Groot en klein datatoetser: tendense, teorie, my storie

Hier gaan verskeie data (natuurlik deur ons voorberei) die invoer-tregter van ons stelsel binne: geldig, ongeldig, gemeng, ens., dan word dit gefiltreer en beland in 'n tussenberging, dan ondergaan hulle weer 'n reeks transformasies en word in die finale stoor geplaas, waaruit op sy beurt analise, die bou van datamars en soek na besigheidsinsigte uitgevoer sal word. In so 'n stelsel, sonder om die werking van ETL-prosesse funksioneel na te gaan, fokus ons op die kwaliteit van data voor en na transformasies, sowel as op die uitset na analise.

Om bogenoemde op te som, ongeag die plekke waar ek gewerk het, was ek oral betrokke by Data-projekte wat die volgende kenmerke gedeel het:

  • Slegs deur outomatisering kan jy sommige gevalle toets en 'n vrystellingsiklus bereik wat aanvaarbaar is vir die besigheid.
  • 'n Toetser op so 'n projek is een van die mees gerespekteerde lede van die span, aangesien dit groot voordele vir elkeen van die deelnemers inhou (versnelling van toetsing, goeie data van die Data Scientist, identifisering van defekte in die vroeë stadiums).
  • Dit maak nie saak of jy op jou eie hardeware of in die wolke werk nie - alle hulpbronne word in 'n groepie soos Hortonworks, Cloudera, Mesos, Kubernetes, ens.
  • Projekte is gebou op 'n mikrodiensbenadering, verspreide en parallelle rekenaars oorheers.

Ek wil daarop let dat wanneer 'n toetsspesialis op die gebied van Datakwaliteit toetse doen, sy professionele fokus verskuif na die kode van die produk en die gereedskap wat gebruik word.

Kenmerkende kenmerke van datakwaliteittoetsing

Daarbenewens het ek vir myself die volgende geïdentifiseer (ek sal dadelik 'n voorbehoud maak dat dit BAIE veralgemeen en uitsluitlik subjektief is) kenmerkende kenmerke van toetsing in Data (Big Data) projekte (stelsels) en ander areas:

Groot en klein datatoetser: tendense, teorie, my storie

nuttige skakels

  1. Teorie: DAMA-DMBOK: Data Management Body of Knowledge: 2de Uitgawe.
  2. Opleidingsentrum EPAM 
  3. Aanbevole materiaal vir 'n beginner datakwaliteit-ingenieur:
    1. Gratis kursus oor Stepik: Inleiding tot databasisse
    2. Kursus oor LinkedIn-leer: Data Science Foundations: Data Engineering.
    3. Artikels:
    4. Video:

Gevolgtrekking

Datakwaliteit is 'n baie jong belowende rigting, om deel te wees daarvan beteken om deel te wees van 'n begin. Sodra jy in Data Kwaliteit is, sal jy gedompel word in 'n groot aantal moderne, in-aanvraag tegnologieë, maar bowenal, enorme geleenthede sal vir jou oopmaak om jou idees te genereer en te implementeer. Jy sal in staat wees om die voortdurende verbetering benadering nie net op die projek te gebruik nie, maar ook vir jouself, voortdurend ontwikkel as 'n spesialis.

Bron: will.com

Voeg 'n opmerking