paint-brush
QA Deequ اور شماریاتی طریقوں کے ساتھ بڑے ڈیٹا سیٹس کی جانچ کرتا ہے۔کی طرف سے@akshayjain1986
42,062 ریڈنگز
42,062 ریڈنگز

QA Deequ اور شماریاتی طریقوں کے ساتھ بڑے ڈیٹا سیٹس کی جانچ کرتا ہے۔

کی طرف سے Akshay Jain
Akshay Jain HackerNoon profile picture

Akshay Jain

@akshayjain1986

Data Engineering Manager at Innovate UK

7 منٹ read2024/05/30
Read on Terminal Reader
Read this story in a terminal
Print this story
Read this story w/o Javascript
Read this story w/o Javascript
tldt arrow
ur-flagUR
اس کہانی کو اردو میں پڑھیں!
en-flagEN
Read this story in the original language, English!
ln-flagLN
Tanga lisolo oyo na lingala!
lo-flagLO
ອ່ານເລື່ອງນີ້ເປັນພາສາລາວ!
ps-flagPS
دا کیسه په پښتو ژبه ولولئ!
lt-flagLT
Skaitykite šią istoriją lietuvių kalba!
hr-flagHR
Pročitajte ovu priču na hrvatskom!
lv-flagLV
Izlasi šo stāstu latviešu valodā!
ht-flagHT
Li istwa sa a an kreyòl ayisyen!
hu-flagHU
Olvasd el ezt a történetet magyarul!
hy-flagHY
Կարդացեք այս պատմությունը հայերեն։
uk-flagUK
Читайте цю історію українською!
mg-flagMG
Vakio amin'ny teny malagasy ity tantara ity!
More
UR

بہت لمبا؛ پڑھنے کے لئے

Deequ لائبریری ایک اوپن سورس ڈیٹا پروفائلنگ اور QA فریم ورک ہے جو Spark پر بنایا گیا ہے۔ یہ آپ کو جامع کوریج کو یقینی بناتے ہوئے، آپ کی مخصوص ضروریات کے مطابق پیچیدہ توثیق کے اصولوں کی وضاحت کرنے دیتا ہے۔ Deequ میں وسیع پیمانے پر میٹرکس اور بے ضابطگی کا پتہ لگانے کی صلاحیتیں شامل ہیں جو آپ کو ڈیٹا کے معیار کے مسائل کی شناخت اور فعال طور پر حل کرنے میں مدد کریں گی۔ یہاں یہ ہے کہ آپ Deequ کا استعمال کرتے ہوئے ان چیکوں کو کیسے نافذ کرسکتے ہیں۔

Companies Mentioned

Mention Thumbnail
Array
Mention Thumbnail
scale
featured image - QA Deequ اور شماریاتی طریقوں کے ساتھ بڑے ڈیٹا سیٹس کی جانچ کرتا ہے۔
Akshay Jain HackerNoon profile picture
Akshay Jain

Akshay Jain

@akshayjain1986

Data Engineering Manager at Innovate UK

ایک مکمل ڈیٹا پروفیشنل کی اہم مہارتوں میں سے ایک بڑے ڈیٹا سیٹس کو مؤثر طریقے سے ہینڈل کرنا ہے، ڈیٹا کے معیار اور وشوسنییتا کو یقینی بنانا۔ ڈیٹا کسی بھی ڈیٹا سسٹم کا مرکزی اور بنیادی حصہ ہوتا ہے، اور ہماری تجارت کے دیگر پہلوؤں میں آپ کے پاس جو بھی اچھی مہارتیں ہیں، یہ وہ چیز ہے جسے آپ نظر انداز نہیں کر سکتے۔


اس آرٹیکل میں، میں Deequ لائبریری اور شماریاتی طریقوں کا استعمال کرتے ہوئے بڑے ڈیٹاسیٹس پر QA چیک کرنے کے لیے مضبوط تکنیکوں کو تلاش کرتا ہوں۔ میں ذیل میں بیان کردہ طریقوں کو یکجا کر کے، آپ ڈیٹا کی سالمیت کو برقرار رکھنے، اپنے ڈیٹا مینجمنٹ کے طریقوں کو بہتر بنانے، اور نیچے کی دھارے کی ایپلی کیشنز میں ممکنہ مسائل کو روکنے کے قابل ہو جائیں گے۔

Deequ لائبریری کا استعمال کرتے ہوئے QA چیک کرتا ہے۔

کیوں Deequ؟

پیمانے پر ڈیٹا کے معیار کو یقینی بنانا ایک مشکل کام ہے، خاص طور پر جب تقسیم شدہ فائل سسٹمز یا ڈیٹا گوداموں میں محفوظ اربوں قطاروں سے نمٹنا ہو۔ Deequ لائبریری ایک اوپن سورس ڈیٹا پروفائلنگ اور QA فریم ورک ہے جو اسپارک پر بنایا گیا ہے جو اس مسئلے کو حل کرنے کے لیے ڈیزائن کیا گیا ایک جدید اور ورسٹائل ٹول ہے۔ جو چیز اسے اسی طرح کے ٹولز سے الگ کرتی ہے وہ اس کی اسپارک کے ساتھ بغیر کسی رکاوٹ کے مربوط ہونے کی صلاحیت ہے، بڑے پیمانے پر ڈیٹا سیٹس کی موثر ہینڈلنگ کے لیے تقسیم شدہ پروسیسنگ پاور کا فائدہ اٹھانا۔


جب آپ اسے آزمائیں گے، تو آپ دیکھیں گے کہ کس طرح اس کی لچک آپ کو جامع کوریج کو یقینی بناتے ہوئے، آپ کی مخصوص ضروریات کے مطابق پیچیدہ توثیق کے اصولوں کی وضاحت کرنے دیتی ہے۔ مزید برآں، Deequ میں وسیع پیمانے پر میٹرکس اور بے ضابطگی کا پتہ لگانے کی صلاحیتیں شامل ہیں جو آپ کو ڈیٹا کے معیار کے مسائل کی شناخت اور فعال طور پر حل کرنے میں مدد کریں گی۔ بڑے اور متحرک ڈیٹاسیٹس کے ساتھ کام کرنے والے ڈیٹا پروفیشنلز کے لیے، 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. انتساب کی تکمیل: چیک کریں کہ آئی ڈی اور پروڈکٹ نام جیسی صفات کبھی بھی خالی نہیں ہوتیں۔


  3. خصوصیت کی انفرادیت: یقینی بنائیں کہ مخصوص صفات، جیسے id، منفرد ہیں۔


  4. قدر کی حد: اس بات کی توثیق کریں کہ ترجیح اور نمبر ویوز جیسی خصوصیات متوقع حدود میں آتی ہیں۔


  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 ان کا ترجمہ Spark جابز کی ایک سیریز میں کرتا ہے، جسے وہ ڈیٹا پر میٹرکس کی گنتی کے لیے انجام دیتا ہے۔ اس کے بعد، یہ ان میٹرکس پر آپ کے دعوے کے فنکشنز (مثلاً، _ == 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!


ٹیسٹ سے پتہ چلا کہ ہمارے مفروضوں کی خلاف ورزی ہوئی ہے! ProductName انتساب کی 5 میں سے صرف 4 (80%) قدریں غیر کالعدم ہیں، اور وضاحت کے انتساب کی 5 میں سے صرف 2 (یعنی، 40%) اقدار میں URL شامل ہے۔ خوش قسمتی سے، ہم نے ایک ٹیسٹ کیا اور غلطیاں پائی؛ کسی کو فوری طور پر ڈیٹا کو ٹھیک کرنا چاہئے!

QA شماریاتی طریقوں سے چیک کرتا ہے۔

جبکہ Deequ ڈیٹا کی توثیق کے لیے ایک مضبوط فریم ورک پیش کرتا ہے، شماریاتی طریقوں کو مربوط کرنے سے آپ کے QA چیک کو مزید بہتر بنایا جا سکتا ہے، خاص طور پر اگر آپ ڈیٹا سیٹ کے مجموعی میٹرکس کے ساتھ کام کر رہے ہیں۔ آئیے دیکھتے ہیں کہ آپ ڈیٹا کے معیار کو مانیٹر کرنے اور یقینی بنانے کے لیے شماریاتی طریقوں کو کیسے استعمال کر سکتے ہیں۔

ریکارڈ کاؤنٹ ٹریکنگ

کاروباری منظر نامے پر غور کریں جہاں ETL (ایکسٹریکٹ، ٹرانسفارم، لوڈ) عمل روزانہ طے شدہ کام پر N ریکارڈ تیار کرتا ہے۔ اگر ریکارڈ کی گنتی میں کوئی اہم انحراف ہوتا ہے تو سپورٹ ٹیمیں الرٹ دینے کے لیے QA چیک ترتیب دینا چاہیں گی۔ مثال کے طور پر، اگر یہ عمل عام طور پر دو مہینوں کے دوران روزانہ 9,500 سے 10,500 کے درمیان ریکارڈ تیار کرتا ہے، تو کوئی اہم اضافہ یا کمی بنیادی ڈیٹا کے ساتھ کسی مسئلے کی نشاندہی کر سکتی ہے۔


ہم اس حد کی وضاحت کرنے کے لیے شماریاتی طریقہ استعمال کر سکتے ہیں جس پر عمل کو سپورٹ ٹیم کو الرٹ دینا چاہیے۔ ذیل میں دو مہینوں کے دوران ریکارڈ گنتی سے باخبر رہنے کی ایک مثال ہے:


image










اس کا تجزیہ کرنے کے لیے، ہم روزانہ کی تبدیلیوں کا مشاہدہ کرنے کے لیے ریکارڈ شمار کے ڈیٹا کو تبدیل کر سکتے ہیں۔ یہ تبدیلیاں عام طور پر صفر کے گرد گھومتی ہیں، جیسا کہ درج ذیل چارٹ میں دکھایا گیا ہے:


image











جب ہم تبدیلی کی اس شرح کو عام تقسیم کے ساتھ پیش کرتے ہیں، تو یہ ایک گھنٹی کا وکر بنتا ہے، جو اس بات کی نشاندہی کرتا ہے کہ ڈیٹا عام طور پر تقسیم کیا جاتا ہے۔ متوقع تبدیلی 0% کے لگ بھگ ہے، 2.63% کے معیاری انحراف کے ساتھ۔


image












اس تجزیہ سے پتہ چلتا ہے کہ ریکارڈ شمار عام طور پر 90% اعتماد کے ساتھ -5.26% سے +5.25% کی حد میں آتا ہے۔ اس کی بنیاد پر، آپ الرٹ بڑھانے کے لیے ایک قاعدہ قائم کر سکتے ہیں اگر ریکارڈ کی گنتی اس حد سے ہٹ جاتی ہے، بروقت مداخلت کو یقینی بنا کر۔

انتساب کوریج ٹریکنگ

انتساب کوریج ای ڈیٹاسیٹ اسنیپ شاٹ کے لیے کل ریکارڈ شمار کے لیے غیر NULL قدروں کے تناسب سے مراد ہے۔ مثال کے طور پر، اگر 100 میں سے 8 ریکارڈز میں کسی خاص وصف کے لیے NULL قدر ہے، تو اس وصف کی کوریج 92% ہے۔


آئیے ایک اور کاروباری کیس کا جائزہ لیتے ہیں جس میں ETL عمل روزانہ ایک پروڈکٹ ٹیبل سنیپ شاٹ تیار کرتا ہے۔ ہم مصنوعات کی وضاحت کے اوصاف کی کوریج کی نگرانی کرنا چاہتے ہیں۔ اگر کوریج ایک خاص حد سے نیچے آتی ہے تو، سپورٹ ٹیم کے لیے الرٹ جاری کیا جانا چاہیے۔ ذیل میں دو ماہ کے دوران پروڈکٹ کی تفصیل کے لیے انتساب کی کوریج کی بصری نمائندگی ہے:


image








کوریج میں روز مرہ کے مطلق فرق کا تجزیہ کرتے ہوئے، ہم دیکھتے ہیں کہ تبدیلیاں صفر کے آس پاس گھومتی ہیں:


image









اس ڈیٹا کو عام تقسیم کے طور پر پیش کرنا ظاہر کرتا ہے کہ یہ عام طور پر تقریباً 0% کی متوقع تبدیلی اور 2.45% کے معیاری انحراف کے ساتھ تقسیم کیا جاتا ہے۔


image














جیسا کہ ہم دیکھتے ہیں، اس ڈیٹاسیٹ کے لیے، پروڈکٹ کی تفصیل کی خصوصیت کی کوریج عام طور پر 90% اعتماد کے ساتھ -4.9% سے +4.9% تک ہوتی ہے۔ اس اشارے کی بنیاد پر، اگر کوریج اس حد سے ہٹ جاتی ہے تو ہم الرٹ دینے کے لیے ایک اصول ترتیب دے سکتے ہیں۔

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 لائبریری کا استعمال کرتے ہوئے اور شماریاتی طریقوں اور ٹائم سیریز الگورتھم کو یکجا کرکے، آپ ڈیٹا کی سالمیت اور وشوسنییتا کو یقینی بنا سکتے ہیں، بالآخر اپنے ڈیٹا مینجمنٹ کے طریقوں کو بڑھا سکتے ہیں۔


اوپر بیان کردہ تکنیکوں کو لاگو کرنے سے آپ کو ڈاؤن اسٹریم ایپلی کیشنز میں ممکنہ مسائل کو روکنے اور آپ کے ڈیٹا ورک فلو کے مجموعی معیار کو بہتر بنانے میں مدد ملے گی۔

L O A D I N G
. . . comments & more!

About Author

Akshay Jain HackerNoon profile picture
Akshay Jain@akshayjain1986
Data Engineering Manager at Innovate UK

ہینگ ٹیگز

یہ مضمون اس میں پیش کیا گیا تھا۔...

Permanent on Arweave
Read on Terminal Reader
Read this story in a terminal
 Terminal
Read this story w/o Javascript
Read this story w/o Javascript
 Lite

Mentioned in this story

companies