![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Aerine ýetirilen maglumat hünärmeniniň möhüm başarnyklaryndan biri, maglumatlaryň hilini we ygtybarlylygyny üpjün edip, uly maglumatlar bazalaryny netijeli işlemekdir. Maglumatlar islendik maglumat ulgamynyň merkezi we esasy bölegi bolup, söwdamyzyň beýleki ugurlarynda haýsy başarnyklara eýe bolsaňyz, bu gözden salmak mümkin däl.
Bu makalada, Deequ kitaphanasyny we statistiki usullary ulanyp, uly maglumatlar bazalarynda QA barlaglaryny geçirmek üçin ygtybarly usullary öwrenýärin. Aşakda düşündirýän çemeleşmelerimi birleşdirip, maglumatlaryň bitewiligini saklap, maglumatlary dolandyrmak tejribäňizi ösdürip bilersiňiz we aşaky programmalarda ýüze çykyp biljek meseleleriň öňüni alyp bilersiňiz.
Maglumatlaryň hilini üpjün etmek gaty kyn mesele, esasanam paýlanan faýl ulgamlarynda ýa-da maglumat ammarlarynda saklanýan milliardlarça hatar bilen iş salyşanyňyzda. Deequ kitaphanasy açyk çeşmeli maglumatlar profilidir we Spark-da gurlan QA çarçuwasy bolup, bu meseläni çözmek üçin döredilen häzirki zaman we köptaraply gural. Ony şuňa meňzeş gurallardan tapawutlandyrýan zat, uly göwrümli maglumat bazalaryny netijeli işlemek üçin paýlanan gaýtadan işleýiş güýjüni ulanyp, “Spark” bilen üznüksiz birleşmek ukybydyr.
Synap göreniňizde, onuň çeýeligi, aýratyn talaplaryňyza laýyk gelýän çylşyrymly tassyklama düzgünlerini kesgitlemäge we giňişleýin gurşawy üpjün etmäge mümkinçilik berer. Mundan başga-da, “Deequ” maglumatlaryň hil meselelerini ýüze çykarmaga we işjeň ýagdaýda çözmäge kömek etjek giň ölçegleri we anomaliýany kesgitlemek mümkinçiliklerini özünde jemleýär. Uly we dinamiki maglumatlar bazalary bilen işleýän maglumat hünärmenleri üçin Deequ Şweýsariýanyň pyçakly çözgüdi. Nädip ulanyp boljakdygyny göreliň.
“Deequ” kitaphanasyny gurmak we maglumat profiliniň töweregindäki ýagdaýlar barada has giňişleýin maglumaty şu ýerden alyp bilersiňiz. Ityönekeýlik üçin, bu mysalda, diňe birnäçe oýunjak ýazgylaryny döretdik:
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)
Maglumat goýmalarynyň köpüsi, NULL däl bahalar we özboluşlylyk ýaly maglumatlar atributlary barada aç-açan çaklamalar bilen gelýär. Deequ bilen bu çaklamalar birlik synaglary arkaly aç-açan bolýar. Ine umumy barlaglar:
Setirleriň sany: Maglumatlar bazasynda belli bir hatar barlygyna göz ýetiriň.
Aýratynlyklaryň dolylygy: id we önümName ýaly atributlaryň hiç haçan NULL däldigini barlaň.
Aýratynlyklaryň özboluşlylygy: id ýaly käbir atributlaryň özboluşlydygyna göz ýetiriň.
Gymmatlyk diapazony: prioritet we numViews ýaly atributlaryň garaşylýan aralyklara degişlidigini barlaň.
Nusga gabat gelişi: Düşündirişleriň garaşylanda URL-leriniň bardygyny barlaň.
Statistik aýratynlyklar: San häsiýetleriniň ortaça kesgitli ölçeglere laýyk gelýändigine göz ýetiriň.
Bu barlaglary Deequ ulanyp nädip amala aşyryp bilersiňiz:
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()
Bu barlaglary geçirenden soň, Deequ olary maglumatlardaky ölçegleri hasaplamak üçin ýerine ýetirýän Spark işleriniň bir toparyna terjime edýär. Ondan soň, çäklendirmeleriň maglumatlary saklaýandygyny ýa-da ýokdugyny anyklamak üçin bu ölçeglerdäki tassyklama funksiýalaryňyzy (meselem, ululygy barlamak üçin _ == 5) çagyrýar. Synagda ýalňyşlyklaryň bardygyny ýa-da ýokdugyny anyklamak üçin "verificationResult" obýektini barlap bileris:
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}") } }
Mysal bilen işlesek, aşakdaky netijäni alarys:
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!
Synag, çaklamalarymyzyň bozulandygyny ýüze çykardy! ÖnümName atributynyň bahalarynyň 5-den (80%) diňe 4-si güýje girmeýär we düşündiriş atributynyň 5-den (ýagny 40%) diňe 2-sinde URL bar. Bagtymyza, synag geçirdik we ýalňyşlyklary tapdyk; kimdir biri maglumatlary derrew düzetmeli!
Deequ maglumatlary barlamak üçin ygtybarly çarçuwany hödürlän hem bolsa, statistiki usullary birleşdirmek, esasanam maglumat bazasynyň jemlenen ölçegleri bilen iş salyşýan bolsaňyz, QA barlaglaryňyzy hasam güýçlendirip biler. Maglumatlaryň hiline gözegçilik etmek we üpjün etmek üçin statistiki usullary nädip ulanyp boljakdygyny göreliň.
ETL (Extract, Transform, Load) prosesi gündelik meýilleşdirilen işde N ýazgylaryny öndürýän iş ssenarisine serediň. Goldaw toparlary, ýazgylar sanynda ep-esli gyşarma bar bolsa, duýduryş ýokarlandyrmak üçin QA barlaglaryny gurup bilerler. Mysal üçin, bu amal adatça iki aýyň dowamynda her gün 9500-den 10,500 aralygynda ýazgy döredýän bolsa, ep-esli ýokarlanmak ýa-da peselmek esasy maglumatlar bilen baglanyşykly meseläni görkezip biler.
Goldaw toparyna duýduryş bermelidigi baradaky bu çäkleri kesgitlemek üçin statistik usuly ulanyp bileris. Aşakda iki aýyň dowamynda ýazgylary sanamagyň suraty:
Muny derňemek üçin, gündelik üýtgeşmeleri synlamak üçin ýazgy sanlaryny üýtgedip bileris. Bu üýtgeşmeler, aşakdaky diagrammada görkezilişi ýaly, nol töwereginde yrgyldadylýar:
Bu üýtgeýiş tizligini adaty paýlanyş bilen görkezenimizde, maglumatlaryň kadaly paýlanýandygyny görkezýän jaň egrisini emele getirýär. Garaşylýan üýtgeşiklik, adaty gyşarnyksyz 2,63% bilen 0% töweregi.
Bu derňew, ýazgylaryň sanynyň 90% ynam bilen -5.26% -den + 5,25% aralygynda bolýandygyny görkezýär. Şundan ugur alyp, öz wagtynda gatyşmagy üpjün edip, ýazgylaryň sany bu çäkden çyksa, duýduryşy ýokarlandyrmak üçin düzgün döredip bilersiňiz.
Aýratynlyk örtügi e, NULL däl bahalaryň maglumatlar bazasynyň suraty üçin umumy ýazgy sanyna bolan gatnaşygyny aňladýar. Mysal üçin, 100 ýazgydan 8-siniň belli bir atribut üçin NULL bahasy bar bolsa, bu atributyň gurşawy 92%.
Her gün önüm tablisasynyň suratyny döredýän ETL prosesi bilen başga bir iş meselesini gözden geçireliň. Önümiň beýany atributlarynyň gurşawyna gözegçilik etmek isleýäris. Daşky gurşaw belli bir çäkden aşak düşse, goldaw topary üçin duýduryş berilmelidir. Aşakda iki aýyň dowamynda önümiň beýany üçin atributlaryň örtüginiň wizual görnüşi:
Daşky gurşawdaky gündelik tapawudy seljermek bilen, üýtgeşmeleriň nol töwereginde yrgyldadygyny görýäris:
Bu maglumatlary adaty paýlanyş hökmünde görkezmek, adatça garaşylýan üýtgeşme 0% töweregi we adaty gyşarnyksyz 2,45% bilen paýlanýandygyny görkezýär.
Görşümiz ýaly, bu maglumat toplumy üçin önümiň beýany atributynyň örtügi, 90% ynam bilen -4,9% -den + 4,9% aralygynda bolýar. Bu görkezijä esaslanyp, gurşaw bu çäkden çyksa, duýduryşy ýokarlandyrmak üçin düzgün düzüp bileris.
Möwsümleýinlik ýa-da tendensiýa ýaly faktorlar sebäpli möhüm üýtgeşiklikleri görkezýän maglumat bazalary bilen işleseňiz, adaty statistiki usullar ýalan duýduryşlary döredip biler. Wagt seriýasy algoritmleri, QA barlaglaryňyzyň takyklygyny we ygtybarlylygyny ýokarlandyryp, has inçe çemeleşmäni hödürleýär.
Has düşnükli duýduryşlary öndürmek üçin, ýa-da ulanyp bilersiňiz
Geliň, Holt-Winters ulanyp, tendensiýany we möwsümleýin nagyşlary görkezýän gündelik satuwlary masgaralap göreliň:
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)
Bu usuly ulanyp, QA barlaglaryna has oýlanyşykly çemeleşip, maglumatlaryň hil meselesini görkezip biljek möhüm gyşarmalary ýüze çykaryp bilersiňiz.
Bu makala, uly maglumat bazalaryňyz üçin QA barlaglaryny netijeli durmuşa geçirmäge kömek eder diýip umyt edýärin. Deequ kitaphanasyny ulanmak we statistiki usullary we wagt seriýasy algoritmlerini birleşdirmek bilen, maglumatlaryň bitewiligini we ygtybarlylygyny üpjün edip, netijede maglumat dolandyryş tejribäňizi güýçlendirip bilersiňiz.
Aboveokarda beýan edilen usullary durmuşa geçirmek, aşaky programmalardaky ähtimal meseleleriň öňüni almaga we maglumat işleriňiziň umumy hilini ýokarlandyrmaga kömek eder.