paint-brush
டீக் மற்றும் புள்ளியியல் முறைகளுடன் பெரிய தரவுத்தொகுப்புகளுக்கான QA சோதனைகள்மூலம்@akshayjain1986
42,050 வாசிப்புகள்
42,050 வாசிப்புகள்

டீக் மற்றும் புள்ளியியல் முறைகளுடன் பெரிய தரவுத்தொகுப்புகளுக்கான QA சோதனைகள்

மூலம் Akshay Jain7m2024/05/30
Read on Terminal Reader
Read this story w/o Javascript

மிக நீளமானது; வாசிப்பதற்கு

டீக் லைப்ரரி என்பது ஸ்பார்க்கில் கட்டமைக்கப்பட்ட ஒரு திறந்த மூல தரவு விவரக்குறிப்பு மற்றும் QA கட்டமைப்பாகும். உங்கள் குறிப்பிட்ட தேவைகளுக்கு ஏற்ப சிக்கலான சரிபார்ப்பு விதிகளை வரையறுக்க இது உங்களை அனுமதிக்கிறது, விரிவான கவரேஜை உறுதி செய்கிறது. Deequ ஆனது விரிவான அளவீடுகள் மற்றும் ஒழுங்கின்மை கண்டறிதல் திறன்களைக் கொண்டுள்ளது, அவை தரவுத் தரச் சிக்கல்களைக் கண்டறிந்து முன்கூட்டியே தீர்க்க உதவும். Deequ ஐப் பயன்படுத்தி இந்த காசோலைகளை எவ்வாறு செயல்படுத்தலாம் என்பது இங்கே.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - டீக் மற்றும் புள்ளியியல் முறைகளுடன் பெரிய தரவுத்தொகுப்புகளுக்கான QA சோதனைகள்
Akshay Jain HackerNoon profile picture

ஒரு திறமையான தரவு நிபுணரின் முக்கிய திறன்களில் ஒன்று, பெரிய தரவுத்தொகுப்புகளை திறம்பட கையாள்வது, தரவு தரம் மற்றும் நம்பகத்தன்மையை உறுதி செய்வதாகும். தரவு என்பது எந்தவொரு தரவு அமைப்பின் மைய மற்றும் அடிப்படைப் பகுதியாகும், மேலும் எங்கள் வர்த்தகத்தின் பிற அம்சங்களில் உங்களிடம் உள்ள நல்ல திறன்கள் எதுவாக இருந்தாலும், இது உங்களால் கவனிக்க முடியாத ஒன்றாகும்.


இந்தக் கட்டுரையில், டீக் லைப்ரரி மற்றும் புள்ளிவிவர முறைகளைப் பயன்படுத்தி பெரிய தரவுத்தொகுப்புகளில் QA சோதனைகளைச் செய்வதற்கான வலுவான நுட்பங்களை நான் ஆராய்கிறேன். நான் கீழே விவரிக்கும் அணுகுமுறைகளை இணைப்பதன் மூலம், நீங்கள் தரவு ஒருமைப்பாட்டை பராமரிக்கவும், உங்கள் தரவு மேலாண்மை நடைமுறைகளை மேம்படுத்தவும் மற்றும் கீழ்நிலை பயன்பாடுகளில் சாத்தியமான சிக்கல்களைத் தடுக்கவும் முடியும்.

டீகு நூலகத்தைப் பயன்படுத்தி QA சரிபார்க்கிறது

ஏன் டீகு?

தரவு தரத்தை அளவில் உறுதி செய்வது ஒரு கடினமான பணியாகும், குறிப்பாக விநியோகிக்கப்பட்ட கோப்பு முறைமைகள் அல்லது தரவுக் கிடங்குகளில் சேமிக்கப்பட்ட பில்லியன் கணக்கான வரிசைகளைக் கையாளும் போது. டீக் லைப்ரரி என்பது ஒரு திறந்த மூல தரவு விவரக்குறிப்பு மற்றும் ஸ்பார்க்கில் கட்டப்பட்ட 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. பண்புக்கூறு முழுமை: ஐடி மற்றும் தயாரிப்பு பெயர் போன்ற பண்புக்கூறுகள் ஒருபோதும் பூஜ்யமாக இல்லை என்பதைச் சரிபார்க்கவும்.


  3. பண்புக்கூறு தனித்துவம்: ஐடி போன்ற சில பண்புக்கூறுகள் தனித்துவமானவை என்பதை உறுதிப்படுத்தவும்.


  4. மதிப்பு வரம்பு: முன்னுரிமை மற்றும் எண் பார்வைகள் போன்ற பண்புக்கூறுகள் எதிர்பார்க்கப்படும் வரம்புகளுக்குள் வருவதைச் சரிபார்க்கவும்.


  5. பேட்டர்ன் மேட்சிங்: எதிர்பார்க்கும் போது விளக்கங்களில் URLகள் உள்ளதா என்பதைச் சரிபார்க்கவும்.


  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()


முடிவுகளை விளக்குதல்

இந்த காசோலைகளை இயக்கிய பிறகு, டீக் அவற்றை தொடர்ச்சியான ஸ்பார்க் வேலைகளாக மொழிபெயர்க்கிறது, இது தரவுகளின் அளவீடுகளை கணக்கிடுவதற்கு செயல்படுத்துகிறது. அதன்பிறகு, இந்த அளவீடுகளில் உங்கள் வலியுறுத்தல் செயல்பாடுகளை (எ.கா., _ == 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%) மட்டுமே பூஜ்யமற்றவை, மேலும் விளக்கப் பண்புக்கூறின் 5 இல் 2 (அதாவது, 40%) மட்டுமே URL ஐக் கொண்டுள்ளது. அதிர்ஷ்டவசமாக, நாங்கள் சோதனை நடத்தி பிழைகளைக் கண்டறிந்தோம்; யாராவது உடனடியாக தரவை சரிசெய்ய வேண்டும்!

புள்ளியியல் முறைகளுடன் 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 சரிபார்ப்புகளின் துல்லியம் மற்றும் நம்பகத்தன்மையை மேம்படுத்தும், நேரத் தொடர் வழிமுறைகள் மிகவும் சுத்திகரிக்கப்பட்ட அணுகுமுறையை வழங்குகின்றன.


மிகவும் விவேகமான விழிப்பூட்டல்களை உருவாக்க, நீங்கள் இரண்டில் ஒன்றைப் பயன்படுத்தலாம் தன்னியக்க ஒருங்கிணைக்கப்பட்ட நகரும் சராசரி (அரிமா) அல்லது தி ஹோல்ட்-வின்டர்ஸ் முறை . முந்தையது போக்குகள் கொண்ட தரவுத்தொகுப்புகளுக்கு போதுமானது, ஆனால் பிந்தையது போக்கு மற்றும் பருவகாலம் ஆகிய இரண்டிலும் தரவுத்தொகுப்புகளைச் சமாளிக்க உதவுகிறது. இந்த முறை நிலை, போக்கு மற்றும் பருவநிலைக்கான கூறுகளைப் பயன்படுத்துகிறது, இது காலப்போக்கில் ஏற்படும் மாற்றங்களுக்கு நெகிழ்வாக மாற்றியமைக்க அனுமதிக்கிறது.


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)


இந்த முறையைப் பயன்படுத்தி, QA சோதனைகளுக்கு மிகவும் நுணுக்கமான அணுகுமுறையை வழங்கும், தரவுத் தரச் சிக்கல்களைக் குறிக்கும் குறிப்பிடத்தக்க விலகல்களைக் கண்டறியலாம்.


உங்கள் பெரிய தரவுத்தொகுப்புகளுக்கான QA சோதனைகளை திறம்பட செயல்படுத்த இந்தக் கட்டுரை உங்களுக்கு உதவும் என்று நம்புகிறேன். Deequ நூலகத்தைப் பயன்படுத்துவதன் மூலமும், புள்ளியியல் முறைகள் மற்றும் நேரத் தொடர் வழிமுறைகளை ஒருங்கிணைப்பதன் மூலமும், தரவு ஒருமைப்பாடு மற்றும் நம்பகத்தன்மையை உறுதிசெய்து, இறுதியில் உங்கள் தரவு மேலாண்மை நடைமுறைகளை மேம்படுத்தலாம்.


மேலே விவரிக்கப்பட்ட நுட்பங்களைச் செயல்படுத்துவது, கீழ்நிலை பயன்பாடுகளில் சாத்தியமான சிக்கல்களைத் தடுக்கவும், உங்கள் தரவுப் பணிப்பாய்வுகளின் ஒட்டுமொத்த தரத்தை மேம்படுத்தவும் உதவும்.