paint-brush
Kontrollet e QA për grupe të mëdha të të dhënave me Deequ & Metodat Statistikorenga@akshayjain1986
41,958 lexime
41,958 lexime

Kontrollet e QA për grupe të mëdha të të dhënave me Deequ & Metodat Statistikore

nga Akshay Jain7m2024/05/30
Read on Terminal Reader
Read this story w/o Javascript

Shume gjate; Te lexosh

Biblioteka Deequ është një kornizë e profilizimit të të dhënave me burim të hapur dhe të QA e ndërtuar në Spark. Kjo ju lejon të përcaktoni rregulla komplekse të vërtetimit të përshtatura për kërkesat tuaja specifike, duke siguruar mbulim gjithëpërfshirës. Deequ përmban metrika të gjera dhe aftësi për zbulimin e anomalive që do t'ju ndihmojnë të identifikoni dhe adresoni në mënyrë proaktive çështjet e cilësisë së të dhënave. Ja se si mund t'i zbatoni këto kontrolle duke përdorur Deequ.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Kontrollet e QA për grupe të mëdha të të dhënave me Deequ & Metodat Statistikore
Akshay Jain HackerNoon profile picture

Një nga aftësitë jetike të një profesionisti të arrirë të të dhënave është trajtimi efektiv i grupeve të mëdha të të dhënave, duke siguruar cilësi dhe besueshmëri të të dhënave. Të dhënat janë pjesa qendrore dhe themelore e çdo sistemi të dhënash, dhe çfarëdo aftësie të mira që keni në aspekte të tjera të tregtisë sonë, kjo është ajo që nuk mund të përballoni ta anashkaloni.


Në këtë artikull, unë eksploroj teknika të fuqishme për kryerjen e kontrolleve të QA në grupe të dhënash të mëdha duke përdorur bibliotekën Deequ dhe metodat statistikore. Duke kombinuar qasjet që shpjegoj më poshtë, ju do të jeni në gjendje të ruani integritetin e të dhënave, të përmirësoni praktikat tuaja të menaxhimit të të dhënave dhe të parandaloni problemet e mundshme në aplikacionet e rrjedhës së poshtme.

Kontrollet QA duke përdorur Bibliotekën Deequ

Pse Deequ?

Sigurimi i cilësisë së të dhënave në shkallë është një detyrë e frikshme, veçanërisht kur kemi të bëjmë me miliarda rreshta të ruajtura në sistemet e skedarëve të shpërndarë ose në magazinat e të dhënave. Biblioteka Deequ është një kornizë e profilizimit të të dhënave me burim të hapur dhe të QA e ndërtuar në Spark që është një mjet modern dhe i gjithanshëm i krijuar për të zgjidhur këtë problem. Ajo që e veçon atë nga mjetet e ngjashme është aftësia e tij për t'u integruar pa probleme me Spark, duke shfrytëzuar fuqinë e shpërndarë të përpunimit për trajtimin efikas të grupeve të të dhënave në shkallë të gjerë.


Kur ta provoni, do të shihni se si fleksibiliteti i tij ju lejon të përcaktoni rregulla komplekse të vërtetimit të përshtatura për kërkesat tuaja specifike, duke siguruar mbulim gjithëpërfshirës. Për më tepër, Deequ përmban metrikë të gjerë dhe aftësi për zbulimin e anomalive që do t'ju ndihmojnë të identifikoni dhe adresoni në mënyrë proaktive çështjet e cilësisë së të dhënave. Për profesionistët e të dhënave që punojnë me grupe të dhënash të mëdha dhe dinamike, Deequ është një zgjidhje me thikë zvicerane. Le të shohim se si mund ta përdorim atë.

Vendosja e Deequ

Më shumë detaje mbi konfigurimin e bibliotekës Deequ dhe rastet e përdorimit rreth profilizimit të të dhënave janë të aksesueshme këtu . Për hir të thjeshtësisë, në këtë shembull, ne sapo krijuam disa regjistrime lodrash:


 val rdd = spark.sparkContext.parallelize(Seq( Item(1, "Thingy A", "awesome thing.", "high", 0), Item(2, "Thingy B", "available at http://thingb.com", null, 0), Item(3, null, null, "low", 5), Item(4, "Thingy D", "checkout https://thingd.ca", "low", 10), Item(5, "Thingy E", null, "high", 12))) val data = spark.createDataFrame(rdd)


Përcaktimi i supozimeve të të dhënave

Shumica e aplikacioneve të të dhënave vijnë me supozime të nënkuptuara rreth atributeve të të dhënave, të tilla si vlerat jo-NULL dhe unike. Me Deequ, këto supozime bëhen të qarta përmes testeve të njësive. Këtu janë disa kontrolle të zakonshme:


  1. Numri i rreshtave: Sigurohuni që grupi i të dhënave të përmbajë një numër specifik rreshtash.


  2. Plotësia e atributit: Kontrolloni që atributet si id dhe emri i produktit nuk janë kurrë NULL.


  3. Unike e atributit: Sigurohuni që disa atribute, si id, të jenë unike.


  4. Gama e vlerave: Vërtetoni që atributet si prioriteti dhe numViews bien brenda intervaleve të pritshme.


  5. Përputhja e modelit: Verifikoni që përshkrimet përmbajnë URL kur pritet.


  6. Vetitë statistikore: Sigurohuni që medianaja e atributeve numerike plotëson kriteret specifike.


Ja se si mund t'i zbatoni këto kontrolle duke përdorur Deequ:


 import com.amazon.deequ.VerificationSuite import com.amazon.deequ.checks.{Check, CheckLevel, CheckStatus} val verificationResult = VerificationSuite() .onData(data) .addCheck( Check(CheckLevel.Error, "unit testing my data") .hasSize(_ == 5) // we expect 5 rows .isComplete("id") // should never be NULL .isUnique("id") // should not contain duplicates .isComplete("productName") // should never be NULL // should only contain the values "high" and "low" .isContainedIn("priority", Array("high", "low")) .isNonNegative("numViews") // should not contain negative values // at least half of the descriptions should contain a url .containsURL("description", _ >= 0.5) // half of the items should have less than 10 views .hasApproxQuantile("numViews", 0.5, _ <= 10)) .run()


Interpretimi i rezultateve

Pas ekzekutimit të këtyre kontrolleve, Deequ i përkthen ato në një seri punësh Spark, të cilat i ekzekuton për të llogaritur metrikat mbi të dhënat. Më pas, ai thërret funksionet tuaja të pohimit (p.sh., _ == 5 për kontrollin e madhësisë) në këto metrikë për të parë nëse kufizimet qëndrojnë mbi të dhënat. Ne mund të inspektojmë objektin "verificationResult" për të parë nëse testi gjeti gabime:


 import com.amazon.deequ.constraints.ConstraintStatus if (verificationResult.status == CheckStatus.Success) { println("The data passed the test, everything is fine!") } else { println("We found errors in the data:\n") val resultsForAllConstraints = verificationResult.checkResults .flatMap { case (_, checkResult) => checkResult.constraintResults } resultsForAllConstraints .filter { _.status != ConstraintStatus.Success } .foreach { result => println(s"${result.constraint}: ${result.message.get}") } }


Nëse ekzekutojmë shembullin, marrim daljen e mëposhtme:


 We found errors in the data: CompletenessConstraint(Completeness(productName)): Value: 0.8 does not meet the requirement! PatternConstraint(containsURL(description)): Value: 0.4 does not meet the requirement!


Testi zbuloi se supozimet tona ishin shkelur! Vetëm 4 nga 5 (80%) e vlerave të atributit productName nuk janë nule dhe vetëm 2 nga 5 (dmth, 40%) vlera të atributit të përshkrimit përmbanin një URL. Për fat të mirë, bëmë një test dhe gjetëm gabimet; dikush duhet të rregullojë menjëherë të dhënat!

Kontrollet e SC me metoda statistikore

Ndërsa Deequ ofron një kornizë të fortë për vërtetimin e të dhënave, integrimi i metodave statistikore mund të përmirësojë më tej kontrollet tuaja të cilësisë së cilësisë, veçanërisht nëse keni të bëni me metrikë të përmbledhur të një grupi të dhënash. Le të shohim se si mund të përdorni metoda statistikore për të monitoruar dhe siguruar cilësinë e të dhënave.

Ndjekja e numërimit të rekordeve

Konsideroni një skenar biznesi ku një proces ETL (Nxjerrja, Transformimi, Ngarkimi) prodhon N regjistrime në një punë të planifikuar ditore. Ekipet mbështetëse mund të dëshirojnë të vendosin kontrolle të cilësisë së cilësisë për të ngritur një alarm nëse ka një devijim të konsiderueshëm në numrin e të dhënave. Për shembull, nëse procesi zakonisht gjeneron nga 9,500 deri në 10,500 regjistrime çdo ditë gjatë dy muajve, çdo rritje ose ulje e konsiderueshme mund të tregojë një problem me të dhënat themelore.


Ne mund të përdorim një metodë statistikore për të përcaktuar këtë prag se cili proces duhet të ngrejë një alarm për ekipin mbështetës. Më poshtë është një ilustrim i gjurmimit të numrit të rekordeve gjatë dy muajve:











Për ta analizuar këtë, ne mund të transformojmë të dhënat e numërimit të rekordeve për të vëzhguar ndryshimet e përditshme. Këto ndryshime përgjithësisht luhaten rreth zeros, siç tregohet në grafikun e mëposhtëm:












Kur përfaqësojmë këtë shkallë ndryshimi me një shpërndarje normale, ajo formon një kurbë zile, që tregon se të dhënat shpërndahen normalisht. Ndryshimi i pritshëm është rreth 0%, me një devijim standard prej 2.63%.













Kjo analizë sugjeron që numri i rekordeve zakonisht bie brenda intervalit -5.26% deri +5.25% me besim 90%. Bazuar në këtë, mund të vendosni një rregull për të ngritur një alarm nëse numri i të dhënave devijon përtej këtij diapazoni, duke siguruar ndërhyrjen në kohë.

Ndjekja e mbulimit të atributeve

Mbulimi i atributit e i referohet raportit të vlerave jo-NULL ndaj numrit total të rekordit për një pamje të çastit të të dhënave. Për shembull, nëse 8 nga 100 regjistrime kanë një vlerë NULL për një atribut të caktuar, mbulimi për atë atribut është 92%.


Le të shqyrtojmë një rast tjetër biznesi me një proces ETL që gjeneron një fotografi të tabelës së produktit çdo ditë. Ne duam të monitorojmë mbulimin e atributeve të përshkrimit të produktit. Nëse mbulimi bie nën një prag të caktuar, duhet të ngrihet një alarm për ekipin mbështetës. Më poshtë është një paraqitje vizuale e mbulimit të atributeve për përshkrimet e produkteve gjatë dy muajve:









Duke analizuar ndryshimet absolute ditore në mbulim, vërejmë se ndryshimet luhaten rreth zeros:










Paraqitja e këtyre të dhënave si një shpërndarje normale tregon se ajo shpërndahet normalisht me një ndryshim të pritshëm prej rreth 0% dhe një devijim standard prej 2.45%.















Siç e shohim, për këtë grup të dhënash, mbulimi i atributeve të përshkrimit të produktit zakonisht varion nga -4,9% në +4,9% me 90% besim. Bazuar në këtë tregues, ne mund të vendosim një rregull për të ngritur një alarm nëse mbulimi devijon përtej këtij diapazoni.

Kontrollet e cilësisë së cilësisë me algoritme të serive kohore

Nëse punoni me grupe të dhënash që tregojnë ndryshime të rëndësishme për shkak të faktorëve si sezonaliteti ose tendencat, metodat tradicionale statistikore mund të shkaktojnë sinjalizime të rreme. Algoritmet e serive kohore ofrojnë një qasje më të rafinuar, duke përmirësuar saktësinë dhe besueshmërinë e kontrolleve tuaja të SC.


Për të prodhuar sinjalizime më të arsyeshme, mund të përdorni ose Mesatarja Lëvizëse e Integruar Autoregresive (ARIMA) ose të Metoda Holt-Winters . E para është mjaft e mirë për grupet e të dhënave me tendenca, por e dyta na lejon të trajtojmë grupet e të dhënave me tendencë dhe sezonalitet. Kjo metodë përdor komponentë për nivelin, trendin dhe sezonalitetin, gjë që e lejon atë të përshtatet në mënyrë fleksibël ndaj ndryshimeve me kalimin e kohës.


Le të modelojmë shitjet ditore që shfaqin modele trendi dhe sezonale duke përdorur Holt-Winters:

 import pandas as pd from statsmodels.tsa.holtwinters import ExponentialSmoothing # Load and preprocess the dataset data = pd.read_csv('sales_data.csv', index_col='date', parse_dates=True) data = data.asfreq('D').fillna(method='ffill') # Fit the Holt-Winters model model = ExponentialSmoothing(data, trend='add', seasonal='add', seasonal_periods=365) fit = model.fit() # Forecast and detect anomalies forecast = fit.fittedvalues residuals = data - forecast threshold = 3 * residuals.std() anomalies = residuals[abs(residuals) > threshold] print("Anomalies detected:") print(anomalies)


Duke përdorur këtë metodë, ju mund të zbuloni devijime të rëndësishme që mund të tregojnë probleme të cilësisë së të dhënave, duke ofruar një qasje më të nuancuar për kontrollet e cilësisë së cilësisë.


Shpresoj se ky artikull do t'ju ndihmojë të zbatoni me efikasitet kontrollet e cilësisë së cilësisë për grupet tuaja të mëdha të të dhënave. Duke përdorur bibliotekën Deequ dhe duke integruar metoda statistikore dhe algoritme të serive kohore, ju mund të siguroni integritetin dhe besueshmërinë e të dhënave, duke përmirësuar përfundimisht praktikat tuaja të menaxhimit të të dhënave.


Zbatimi i teknikave të përshkruara më sipër do t'ju ndihmojë të parandaloni problemet e mundshme në aplikacionet në rrjedhën e poshtme dhe të përmirësoni cilësinë e përgjithshme të rrjedhës së punës tuaj të të dhënave.