paint-brush
QA د ډیکو او احصایوي میتودونو سره د لوی ډیټاسیټونو لپاره چک کويلخوا@akshayjain1986
42,029 لوستل
42,029 لوستل

QA د ډیکو او احصایوي میتودونو سره د لوی ډیټاسیټونو لپاره چک کوي

لخوا Akshay Jain7m2024/05/30
Read on Terminal Reader
Read this story w/o Javascript

ډېر اوږد؛ لوستل

د Deequ کتابتون د خلاصې سرچینې ډیټا پروفایلنګ او QA چوکاټ دی چې په سپارک کې جوړ شوی. دا تاسو ته اجازه درکوي چې ستاسو د ځانګړو اړتیاو سره سم پیچلي تایید قواعد تعریف کړئ، جامع پوښښ ډاډمن کړئ. Deequ پراخه میټریکونه او د نامناسب کشف وړتیاوې ښیي چې تاسو سره به د ډیټا کیفیت مسلو پیژندلو او په فعاله توګه حل کولو کې مرسته وکړي. دلته دا دی چې تاسو څنګه کولی شئ دا چیکونه د Deequ په کارولو سره پلي کړئ.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - QA د ډیکو او احصایوي میتودونو سره د لوی ډیټاسیټونو لپاره چک کوي
Akshay Jain HackerNoon profile picture

د بشپړ شوي ډیټا مسلکي یو له حیاتي مهارتونو څخه د لوی ډیټاسیټونو مؤثره اداره کول دي ، د معلوماتو کیفیت او اعتبار ډاډمن کول. ډیټا د هر ډیټا سیسټم مرکزي او اساسي برخه ده، او هر هغه څه چې تاسو زموږ د سوداګرۍ په نورو اړخونو کې ښه مهارتونه لرئ، دا هغه یو دی چې تاسو یې سترګې پټول نشي کولی.


پدې مقاله کې، زه د Deequ کتابتون او احصایوي میتودونو په کارولو سره په لوی ډیټاسیټونو کې د QA چکونو ترسره کولو لپاره قوي تخنیکونه وپلټم. د هغو تګلارو په یوځای کولو سره چې زه یې لاندې تشریح کوم، تاسو به وکولی شئ د ډیټا بشپړتیا وساتئ، ستاسو د معلوماتو مدیریت کړنې ته وده ورکړئ، او د لاندې غوښتنلیکونو کې د احتمالي مسلو مخه ونیسئ.

QA د Deequ کتابتون په کارولو سره چک کوي

ولې دیک؟

په پیمانه د معلوماتو کیفیت ډاډمن کول یو ستونزمن کار دی، په ځانګړې توګه کله چې د توزیع شوي فایل سیسټمونو یا ډیټا ګودامونو کې د ملیاردونو قطارونو سره معامله کول. د Deequ کتابتون د خلاصې سرچینې ډیټا پروفایلنګ او QA چوکاټ دی چې په سپارک کې جوړ شوی چې د دې ستونزې د حل لپاره ډیزاین شوی عصري او څو اړخیزه وسیله ده. هغه څه چې دا د ورته وسیلو څخه جلا کوي د دې وړتیا ده چې پرته له سپارک سره مدغم شي ، د لوی کچې ډیټاسیټونو مؤثره اداره کولو لپاره د توزیع شوي پروسس ځواک څخه ګټه پورته کوي.


کله چې تاسو دا هڅه وکړئ، تاسو به وګورئ چې د دې انعطاف څنګه تاسو ته اجازه درکوي چې ستاسو د ځانګړو اړتیاو سره سم پیچلي تایید قواعد تعریف کړئ، جامع پوښښ ډاډمن کړئ. سربیره پردې ، Deequ پراخه میټریکونه او د بې نظمۍ کشف کولو وړتیاوې وړاندې کوي چې تاسو سره به د ډیټا کیفیت مسلو پیژندلو او په فعاله توګه حل کولو کې مرسته وکړي. د ډیټا متخصصینو لپاره چې د لوی او متحرک ډیټاسیټونو سره کار کوي ، ډییک د سویس چاقو حل دی. راځئ وګورو چې څنګه یې وکاروو.

د Deequ تنظیم کول

د Deequ کتابتون په اړه نور توضیحات او د ډیټا پروفایل کولو شاوخوا قضیې کارول دلته د لاسرسي وړ دي. د سادګۍ لپاره، پدې مثال کې، موږ یوازې د لوبو څو ریکارډونه تولید کړل:


 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)


د معلوماتو انګیرنې تعریف کول

د ډیټا ډیری غوښتنلیکونه د ډیټا ځانګړتیاو په اړه ضمني انګیرنې سره راځي ، لکه غیر NULL ارزښتونه او انفرادیت. د Deequ سره، دا انګیرنې د واحد ازموینې له لارې روښانه کیږي. دلته ځینې عام چکونه دي:


  1. د قطار شمیره: ډاډ ترلاسه کړئ چې ډیټاسیټ د قطارونو ځانګړي شمیر لري.


  2. د خاصیت بشپړتیا: وګورئ چې د id او محصول نوم په څیر ځانګړتیاوې هیڅ کله ناکله ندي.


  3. د خاصیت انفرادیت: ډاډ ترلاسه کړئ چې ځینې ځانګړتیاوې لکه ID، ځانګړي دي.


  4. د ارزښت سلسله: تایید کړئ چې ځانګړتیاوې لکه لومړیتوب او numViews په تمه شوي حدونو کې راځي.


  5. د نمونې سره سمون: تایید کړئ چې توضیحات د URLs لري کله چې تمه کیږي.


  6. احصایوي ملکیتونه: ډاډ ترلاسه کړئ چې د شمیري ځانګړتیاو منځنی ځانګړي معیارونه پوره کوي.


دلته د 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()


د پایلو تشریح کول

د دې چکونو له چلولو وروسته، Deequ دوی د سپارک دندو په لړۍ کې وژباړي، کوم چې دا په ډیټا کې د میټریکونو محاسبه کولو لپاره اجرا کوي. وروسته، دا په دې میترونو کې ستاسو د ادعا دندې (د بیلګې په توګه، _ == 5 د اندازې چک لپاره) غوښتنه کوي ترڅو وګوري چې آیا محدودیتونه په ډاټا کې ساتل کیږي. موږ کولی شو د اعتراض "تصدیق پایلې" معاینه کړو ترڅو وګورو چې ایا ازموینې غلطی موندلی:


 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}") } }


که موږ مثال چلوو، موږ لاندې محصول ترلاسه کوو:


 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!


ازموینې وموندله چې زموږ انګیرنې سرغړونه شوې! یوازې د 5 څخه 4 (80٪) د productName خاصیت ارزښتونه غیر ناپاک دي، او یوازې د 5 څخه 2 (یعنې، 40٪) د تشریح خاصیت یو آر ایل لري. خوشبختانه، موږ یوه ازموینه واخیسته او تېروتنې مو وموندلې؛ یو څوک باید سمدستي معلومات سم کړي!

QA د احصایوي میتودونو سره چک کوي

پداسې حال کې چې Deequ د معلوماتو اعتبار لپاره یو پیاوړی چوکاټ وړاندې کوي، د احصایوي میتودونو یوځای کول کولی شي ستاسو د QA چکونو ته وده ورکړي، په ځانګړې توګه که تاسو د ډیټاسیټ مجموعي میترونو سره معامله کوئ. راځئ وګورو چې تاسو څنګه کولی شئ د احصایوي میتودونو څخه کار واخلئ ترڅو د معلوماتو کیفیت څارنه او ډاډ ترلاسه کړئ.

د ریکارډ شمیره تعقیب

د سوداګرۍ سناریو په پام کې ونیسئ چیرې چې د ETL (استخراج، لیږد، بار) پروسه په ورځني ټاکل شوي دندې کې N ریکارډونه تولیدوي. د ملاتړ ټیمونه ممکن د QA چیکونه تنظیم کړي ترڅو خبرداری رامینځته کړي که چیرې د ریکارډ شمیر کې د پام وړ انحراف شتون ولري. د مثال په توګه، که چیرې پروسه په عمومي ډول د دوو میاشتو په اوږدو کې هره ورځ د 9,500 څخه تر 10,500 پورې ریکارډونه رامینځته کړي، د پام وړ زیاتوالی یا کمښت کیدای شي د اصلي معلوماتو سره مسله په ګوته کړي.


موږ کولی شو د احصایوي میتود څخه کار واخلو ترڅو دا حد وټاکو چې کوم بهیر باید د ملاتړ ټیم ته خبرداری ورکړي. لاندې د دوو میاشتو په اوږدو کې د ریکارډ شمیرې تعقیب یوه بیلګه ده:











د دې تحلیل لپاره، موږ کولی شو د ریکارډ شمیرې ډاټا بدل کړو ترڅو د ورځني بدلونونو څارنه وکړو. دا بدلونونه عموما د صفر شاوخوا ګرځي، لکه څنګه چې په لاندې چارټ کې ښودل شوي:












کله چې موږ د بدلون دا نرخ د نورمال توزیع سره نمایش کوو، دا د بیل وکر جوړوي، دا په ګوته کوي چې ډاټا په نورمال ډول ویشل کیږي. متوقع بدلون د 0٪ شاوخوا دی، د 2.63٪ معیاري انحراف سره.













دا تحلیل وړاندیز کوي چې د ریکارډ شمیره معمولا د 90٪ باور سره -5.26٪ څخه +5.25٪ حد کې راځي. د دې پراساس، تاسو کولی شئ د خبرتیا لوړولو لپاره یو قاعده رامینځته کړئ که چیرې د ریکارډ شمیره د دې حد څخه بهر وي، د وخت مداخله یقیني کړي.

د خاصیت پوښښ تعقیب

د خاصیت پوښښ e د ډیټاسیټ سنیپ شاټ لپاره د ټول ریکارډ شمیرې ته د غیر NULL ارزښتونو تناسب ته اشاره کوي. د مثال په توګه، که د 100 ریکارډونو څخه 8 د یو ځانګړي خاصیت لپاره NULL ارزښت ولري، د دې خاصیت پوښښ 92٪ دی.


راځئ چې د ETL پروسې سره د بلې سوداګرۍ قضیه بیاکتنه وکړو چې هره ورځ د محصول میز سنیپ شاټ تولیدوي. موږ غواړو د محصول توضیحي ځانګړتیاو پوښښ وڅیړو. که چیرې پوښښ د یو ټاکلي حد څخه ښکته وي، د ملاتړ ټیم لپاره باید خبرتیا راپورته شي. لاندې د دوه میاشتو په اوږدو کې د محصول توضیحاتو لپاره د ځانګړتیا پوښښ بصری نمایش دی:









په پوښښ کې د مطلق ورځني توپیرونو تحلیل کولو سره، موږ ګورو چې بدلونونه د صفر په شاوخوا کې تیریږي:










د دې ډاټا استازیتوب د نورمال توزیع په توګه ښیي چې دا په نورمال ډول د شاوخوا 0٪ اټکل شوي بدلون او د 2.45٪ معیاري انحراف سره توزیع کیږي.















لکه څنګه چې موږ ګورو ، د دې ډیټا سیټ لپاره ، د محصول توضیحي ځانګړتیا پوښښ معمولا د 4.9٪ څخه تر +4.9٪ پورې د 90٪ باور سره وي. د دې شاخص پراساس، موږ کولی شو د خبرتیا لوړولو لپاره یو قاعده جوړه کړو که چیرې پوښښ د دې حد څخه بهر وي.

QA د وخت لړۍ الګوریتمونو سره چک کوي

که تاسو د ډیټاسیټونو سره کار کوئ چې د فکتورونو لکه موسم یا رجحاناتو له امله د پام وړ بدلونونه ښیې، دودیز احصایوي میتودونه ممکن غلط خبرتیاوې رامینځته کړي. د وخت لړۍ الګوریتمونه ستاسو د QA چکونو دقت او اعتبار ته وده ورکولو سره یو ډیر رغنده چلند وړاندیز کوي.


د لا ډیر حساس خبرتیاو تولید لپاره، تاسو کولی شئ یا هم وکاروئ د اتوماتیک مدغم حرکت اوسط (ARIMA) یا د هولټ - د ژمي طریقه . پخوانی د رجحاناتو سره د ډیټاسیټونو لپاره کافي ښه دی ، مګر وروستی موږ ته اجازه راکوي د ډیټاسیټونو سره د رجحان او موسم دواړه سره معامله وکړو. دا طریقه د کچې، رجحان، او موسمیت لپاره اجزا کاروي، کوم چې دا اجازه ورکوي چې د وخت په تیریدو سره بدلونونو سره په نرمۍ سره تطبیق کړي.


راځئ چې د ورځني پلور مسخره ماډل کړو چې د هولټ-وینټر په کارولو سره رجحان او موسمي نمونې دواړه نندارې ته وړاندې کوي:

 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)


د دې میتود په کارولو سره، تاسو کولی شئ د پام وړ انحرافات ومومئ کوم چې ممکن د ډیټا کیفیت مسلې په ګوته کړي، د QA چکونو لپاره خورا مهم چلند چمتو کوي.


زه امید لرم چې دا مقاله به تاسو سره ستاسو د لوی ډیټاسیټونو لپاره د QA چیکونو په مؤثره توګه پلي کولو کې مرسته وکړي. د Deequ کتابتون په کارولو او د احصایوي میتودونو او د وخت لړۍ الګوریتمونو یوځای کولو سره، تاسو کولی شئ د ډیټا بشپړتیا او اعتبار ډاډمن کړئ، په نهایت کې ستاسو د معلوماتو مدیریت کړنې ته وده ورکوي.


د پورته ذکر شوي تخنیکونو پلي کول به تاسو سره مرسته وکړي چې د لاندې جریان غوښتنلیکونو کې د احتمالي مسلو مخه ونیسي او ستاسو د ډیټا کاري فلو عمومي کیفیت ښه کړي.