![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Ny iray amin'ireo fahaiza-manao tena ilaina ho an'ny matihanina angon-drakitra vita dia ny fitantanana mahomby amin'ny angona lehibe, miantoka ny kalitaon'ny angona sy ny fahatokisana. Ny angon-drakitra no singa fototra sy fototra amin'ny rafitra angon-drakitra rehetra, ary na inona na inona fahaiza-manao tsara anananao amin'ny lafiny hafa amin'ny varotra ataontsika, ity no iray tsy azonao atao tsinontsinona.
Amin'ity lahatsoratra ity, mikaroka teknika matanjaka aho amin'ny fanaovana fanamarinana QA amin'ny angona lehibe amin'ny fampiasana ny tranomboky Deequ sy ny fomba statistika. Amin'ny fampifangaroana ireo fomba hazavaiko etsy ambany, dia ho afaka hihazona ny fahamarinan'ny angona ianao, hanatsara ny fomba fitantananao angona, ary hisorohana ny olana mety hitranga amin'ny fampiharana ambany.
Ny fiantohana ny kalitaon'ny angona amin'ny ambaratonga dia asa sarotra, indrindra rehefa miatrika andalana an'arivony tapitrisa voatahiry ao amin'ny rafitra fichier zaraina na trano fanatobiana angona. Ny tranomboky Deequ dia profiling angon-drakitra misokatra sy rafitra QA natsangana tamin'ny Spark izay fitaovana maoderina sy maro samihafa natao hamahana ity olana ity. Ny mampiavaka azy amin'ny fitaovana mitovitovy amin'izany dia ny fahafahany miray tsikombakomba amin'ny Spark, mampiasa hery fanodinana zaraina ho an'ny fitantanana mahomby amin'ny angon-drakitra lehibe.
Rehefa manandrana azy ianao dia ho hitanao ny fomba ahafahan'ny fahafaha-manaony mamaritra ny fitsipika fanamarinana sarotra mifanaraka amin'ny fepetra takinao manokana, miantoka fandrakofana feno. Fanampin'izany, ny Deequ dia manasongadina metrika midadasika sy fahaiza-misaroka anomaly izay hanampy anao hamantatra sy hamahana ny olana momba ny kalitaon'ny angona. Ho an'ireo matihanina amin'ny data miasa miaraka amin'ny angona lehibe sy mavitrika, Deequ dia vahaolana Swiss-antsy. Andeha hojerentsika ny fomba hampiasantsika azy io.
Ny antsipiriany bebe kokoa momba ny fananganana tranomboky Deequ sy ny tranga fampiasana manodidina ny mombamomba ny data dia azo jerena eto . Noho ny fahatsorana, amin'ity ohatra ity dia namorona rakitsoratra kilalao vitsivitsy izahay:
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)
Ny ankamaroan'ny rindranasa angon-drakitra dia tonga miaraka amin'ny fiheverana an-kolaka momba ny toetran'ny angona, toy ny sanda tsy NULL sy ny maha-tokana. Miaraka amin'i Deequ, miharihary ireo vinavina ireo amin'ny alàlan'ny fitsapana unit. Ireto misy fisavana mahazatra:
Isan'ny laharana: Ataovy azo antoka fa misy andalana manokana ny angon-drakitra.
Attribute Completeness: Hamarino fa tsy NULL mihitsy ny toetra toy ny id sy productName.
Toetra mampiavaka: Ataovy azo antoka fa miavaka ny toetra sasany, toy ny id.
Sandan'ny sanda: Hamarino fa ny toetra toy ny laharam-pahamehana sy ny numViews dia tafiditra ao anatin'ny fetra andrasana.
Mifanaraka amin'ny lamina: Hamarino fa misy URL ny famaritana rehefa andrasana.
Toetra statistika: Ataovy azo antoka fa mahafeno fepetra manokana ny median'ny toetran'ny isa.
Ity ny fomba ahafahanao mampihatra ireo fanamarinana ireo amin'ny fampiasana 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()
Rehefa avy nanao ireo fisavana ireo i Deequ dia adikan'i Deequ ho andiana asa Spark izy ireo, izay tanterahiny amin'ny kajy ny metrika amin'ny angona. Aorian'izay dia miantso ny asa fanambaranao (oh, _ == 5 ho an'ny fanamarinana ny habeny) amin'ireo metrika ireo mba hahitana raha mitazona ny angona ny teritery. Afaka manara-maso ny zavatra "verificationResult" isika mba hahitana raha misy hadisoana ny fitsapana:
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}") } }
Raha manao ny ohatra isika dia mahazo ity vokatra manaraka ity:
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!
Hitan'ny fitsapana fa voahitsakitsaka ny fiheverantsika! Ny 4 amin'ny 5 (80%) amin'ny soatoavin'ny toetran'ny ProductName ihany no tsy misy, ary ny 2 amin'ny 5 (izany hoe 40%) amin'ny toetra famaritana no misy URL. Soa ihany fa nanao fitsapana izahay ary nahita ny fahadisoana; tokony hisy hanamboatra avy hatrany ny data!
Na dia manolotra rafitra matanjaka ho an'ny fanamarinana angon-drakitra aza i Deequ, ny fampidirana ireo fomba statistika dia afaka manatsara bebe kokoa ny fanamarinana QA anao, indrindra raha toa ianao ka miatrika metrika mitambatra amin'ny angon-drakitra. Andeha hojerentsika ny fomba ahafahanao mampiasa fomba statistika hanaraha-maso sy hiantohana ny kalitaon'ny angona.
Eritrereto ny toe-javatra momba ny orinasa iray izay ahitana dingana ETL (Extract, Transform, Load) mamokatra rakitsoratra N amin'ny asa voalahatra isan'andro. Ny ekipa mpanohana dia mety te-hametraka fisavana QA hanairana fanairana raha toa ka misy fiviliana lehibe amin'ny isa voarakitra. Ohatra, raha miteraka firaketana eo anelanelan'ny 9,500 ka hatramin'ny 10,500 isan'andro mandritra ny roa volana ny dingana, dia mety hanondro olana amin'ny angon-drakitra fototra ny fisondrotana na fihenam-bidy lehibe.
Azontsika atao ny mampiasa fomba statistika hamaritana an'io tokonam-baravarana io izay tokony hanairana ny ekipa mpanohana. Ity ambany ity ny sarin'ny fanaraha-maso ny isan'ny firaketana an-tsoratra nandritra ny roa volana:
Mba hamakafaka izany dia azontsika ovaina ny angon-drakitra isan'andro mba hijerena ny fiovana isan'andro. Ireo fiovana ireo amin'ny ankapobeny dia mihodinkodina manodidina ny aotra, araka ny aseho amin'ity tabilao manaraka ity:
Rehefa maneho io tahan'ny fiovàna io miaraka amin'ny fizarana ara-dalàna isika, dia mamorona fiolahana lakolosy, izay manondro fa ny angona dia mizara ara-dalàna. Ny fiovana andrasana dia manodidina ny 0%, miaraka amin'ny fivilian-dàlana mahazatra 2.63%.
Ity famakafakana ity dia manondro fa ny isan'ny firaketana dia matetika ao anatin'ny -5.26% hatramin'ny +5.25% miaraka amin'ny fahatokisana 90%. Mifototra amin'izany, azonao atao ny mametraka fitsipika hampiakarana fanairana raha toa ka mivily mihoatra an'io elanelana io ny isan'ny rakitra, miantoka ny fidirana ara-potoana.
Ny fonon'ny toetra e dia manondro ny tahan'ny sanda tsy NULL amin'ny fitambaran'ny isan'ny rakitra ho an'ny sarin'ny angon-drakitra. Ohatra, raha 8 amin'ny rakitra 100 no manana sanda NULL ho an'ny toetra iray manokana, ny fandrakofana an'io toetra io dia 92%.
Andeha hojerentsika tranga iray hafa momba ny raharaham-barotra miaraka amin'ny fizotran'ny ETL mamorona sary latabatra vokatra isan'andro. Te-hanara-maso ny fandrakofana ireo toetra famaritana ny vokatra izahay. Raha latsaka ambanin'ny tokonam-baravarana iray ny fandrakofana, dia tokony hisy fanairana ho an'ny ekipa mpanohana. Ity ambany ity ny fanehoana an-tsary momba ny fandrakofana toetra ho an'ny famaritana vokatra mandritra ny roa volana:
Amin'ny famakafakana ny fahasamihafana tanteraka isan'andro amin'ny fandrakofana, dia hitantsika fa mihodinkodina manodidina ny aotra ny fiovana:
Ny fanehoana an'io angon-drakitra io ho fizarana ara-dalàna dia mampiseho fa mizara ara-dalàna izy io miaraka amin'ny fiovana andrasana manodidina ny 0% ary ny fivilian-dàlana mahazatra 2.45%.
Araka ny hitantsika, ho an'ity tahirin-kevitra ity, ny fandrakofana momba ny toetra momba ny vokatra dia matetika manomboka amin'ny -4.9% ka hatramin'ny +4.9% miaraka amin'ny fahatokisana 90%. Mifototra amin'ity tondro ity, afaka mametraka fitsipika izahay mba hampiakarana ny fanairana raha toa ka mivaona any an-dafin'io faritra io ny fandrakofana.
Raha miasa miaraka amin'ny angon-drakitra izay mampiseho fiovaovana lehibe noho ny anton-javatra toy ny fizaran-taona na fironana ianao, dia mety hiteraka fanairana diso ny fomba statistika mahazatra. Ny algorithm andiam-potoana dia manolotra fomba fiasa voadio kokoa, manatsara ny fahitsiana sy ny fahatokisana ny fanamarinana QA anao.
Mba hamokarana fanairana manan-danja kokoa dia azonao ampiasaina na ny
Andao hanao varotra isan'andro maneso izay mampiseho ny fironana sy ny vanim-potoana amin'ny fampiasana 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)
Amin'ny fampiasana an'io fomba io, azonao atao ny mamantatra ny fiviliana lehibe izay mety manondro olana momba ny kalitaon'ny angona, manome fomba fijery mirindra kokoa amin'ny fanamarinana QA.
Manantena aho fa ity lahatsoratra ity dia hanampy anao amin'ny fanatanterahana tsara ny fanamarinana QA ho an'ny angona lehibe. Amin'ny alàlan'ny fampiasana ny tranomboky Deequ sy ny fampidirana ny fomba statistika sy ny algorithm andiam-potoana, dia azonao atao ny miantoka ny fahamarinan'ny angona sy ny fahatokisana, amin'ny farany manatsara ny fomba fitantanana data.
Ny fampiharana ireo teknika voalaza etsy ambony dia hanampy anao hisoroka ny olana mety hitranga amin'ny rindranasa midina ary hanatsara ny kalitao ankapobeny amin'ny rindranasa datanao.