42,163 කියවීම්
42,163 කියවීම්

QA Deequ සහ සංඛ්‍යානමය ක්‍රම සමඟ විශාල දත්ත කට්ටල සඳහා පරීක්ෂා කරයි

විසින් Akshay Jain7m2024/05/30
Read on Terminal Reader
Read this story w/o Javascript

දිග වැඩියි; කියවීමට

Deequ library යනු Spark මත ගොඩනගා ඇති විවෘත මූලාශ්‍ර දත්ත පැතිකඩ සහ QA රාමුවකි. විස්තීර්ණ ආවරණයක් සහතික කරමින් ඔබේ නිශ්චිත අවශ්‍යතාවලට ගැලපෙන සංකීර්ණ වලංගුකරණ රීති නිර්වචනය කිරීමට එය ඔබට ඉඩ සලසයි. Deequ ඔබට දත්ත තත්ත්ව ගැටළු හඳුනා ගැනීමට සහ ක්‍රියාශීලීව විසඳීමට උපකාර වන විස්තීරණ ප්‍රමිතික සහ විෂමතා හඳුනාගැනීමේ හැකියාවන් දක්වයි. Deequ භාවිතයෙන් ඔබට මෙම චෙක්පත් ක්‍රියාත්මක කළ හැකි ආකාරය මෙන්න.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - QA Deequ සහ සංඛ්‍යානමය ක්‍රම සමඟ විශාල දත්ත කට්ටල සඳහා පරීක්ෂා කරයි
Akshay Jain HackerNoon profile picture

දක්ෂ දත්ත වෘත්තිකයෙකුගේ එක් වැදගත් කුසලතාවයක් වන්නේ දත්තවල ගුණාත්මකභාවය සහ විශ්වසනීයත්වය සහතික කිරීම, විශාල දත්ත කට්ටල ඵලදායී ලෙස හැසිරවීමයි. දත්ත යනු ඕනෑම දත්ත පද්ධතියක කේන්ද්‍රීය සහ මූලික කොටස වන අතර, අපගේ වෙළඳාමේ වෙනත් අංශවල ඔබට ඇති හොඳ කුසලතා කුමක් වුවත්, මෙය ඔබට නොසලකා හැරිය නොහැකි එකකි.


මෙම ලිපියෙන්, මම Deequ පුස්තකාලය සහ සංඛ්‍යානමය ක්‍රම භාවිතා කරමින් විශාල දත්ත කට්ටලවල QA චෙක්පත් සිදු කිරීම සඳහා ශක්තිමත් තාක්ෂණික ක්‍රම ගවේෂණය කරමි. මම පහත පැහැදිලි කරන ප්‍රවේශයන් ඒකාබද්ධ කිරීමෙන්, ඔබට දත්ත අඛණ්ඩතාව පවත්වා ගැනීමට, ඔබේ දත්ත කළමනාකරණ භාවිතයන් වැඩි දියුණු කිරීමට සහ පහළ යෙදුම්වල ඇති විය හැකි ගැටළු වළක්වා ගැනීමට හැකි වනු ඇත.

QA Deequ පුස්තකාලය භාවිතයෙන් පරීක්ෂා කරයි

ඇයි Deequ?

පරිමානයෙන් දත්ත ගුණාත්මක බව සහතික කිරීම අතිශය දුෂ්කර කාර්යයකි, විශේෂයෙන්ම බෙදා හරින ලද ගොනු පද්ධති හෝ දත්ත ගබඩාවල ගබඩා කර ඇති පේළි බිලියන ගණනක් සමඟ කටයුතු කරන විට. Deequ library යනු මෙම ගැටළුව විසඳීම සඳහා නිර්මාණය කර ඇති නවීන සහ බහුකාර්ය මෙවලමක් වන Spark මත ගොඩනගා ඇති විවෘත මූලාශ්‍ර දත්ත පැතිකඩ සහ QA රාමුවකි. සමාන මෙවලම් වලින් එය වෙනස් වන්නේ Spark සමඟ බාධාවකින් තොරව ඒකාබද්ධ වීමට ඇති හැකියාවයි, මහා පරිමාණ දත්ත කට්ටල කාර්යක්ෂමව හැසිරවීම සඳහා බෙදා හරින ලද සැකසුම් බලය උත්තේජනය කරයි.


ඔබ එය උත්සාහ කරන විට, එහි නම්‍යශීලීභාවය මඟින් ඔබේ නිශ්චිත අවශ්‍යතාවලට ගැලපෙන සංකීර්ණ වලංගුකරණ රීති නිර්වචනය කිරීමට ඉඩ සලසන ආකාරය ඔබට පෙනෙනු ඇත, පුළුල් ආවරණයක් සහතික කරයි. මීට අමතරව, Deequ ඔබට දත්ත ගුණාත්මක ගැටළු හඳුනා ගැනීමට සහ ක්‍රියාශීලීව විසඳීමට උපකාර වන විස්තීරණ මිනුම් සහ විෂමතා හඳුනාගැනීමේ හැකියාවන් දක්වයි. විශාල සහ ගතික දත්ත කට්ටල සමඟ වැඩ කරන දත්ත වෘත්තිකයන් සඳහා, Deequ යනු Swiss-knife විසඳුමකි. අපි බලමු කොහොමද ඒක පාවිච්චි කරන්නේ කියලා.

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. අගය පරාසය: ප්‍රමුඛතා සහ numViews වැනි ගුණාංග අපේක්ෂිත පරාසයන් තුළට වැටෙන බව තහවුරු කරන්න.


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


ප්රතිඵල අර්ථකථනය කිරීම

මෙම චෙක්පත් ක්‍රියාත්මක කිරීමෙන් පසුව, Deequ ඒවා Spark jobs මාලාවකට පරිවර්තනය කරයි, එය දත්තවල ප්‍රමිතික ගණනය කිරීමට එය ක්‍රියාත්මක කරයි. පසුව, එය ඔබගේ ප්‍රකාශන ශ්‍රිතයන් (උදා, ප්‍රමාණය පරීක්ෂාව සඳහා _ == 5) මෙම ප්‍රමිතික මත සීමාවන් දත්ත මත පවතිනවාදැයි බැලීමට ඉල්ලා සිටී. පරීක්ෂණයෙන් දෝෂ හමු වී ඇත්දැයි බැලීමට අපට "verificationResult" වස්තුව පරීක්ෂා කළ හැක:


 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 දක්වා ජනනය කරන්නේ නම්, කිසියම් සැලකිය යුතු වැඩි වීමක් හෝ අඩුවීමක් යටින් පවතින දත්ත සමඟ ගැටලුවක් පෙන්නුම් කරයි.


සහායක කණ්ඩායමට අනතුරු ඇඟවීමක් කළ යුතු ක්‍රියාවලිය පිළිබඳ මෙම සීමාව නිර්වචනය කිරීමට අපට සංඛ්‍යානමය ක්‍රමයක් භාවිත කළ හැක. පහත දැක්වෙන්නේ මාස දෙකක කාලයක් තුළ වාර්තාගත ගණනය කිරීම් නිරීක්ෂණය කිරීමේ නිදර්ශනයකි:











මෙය විශ්ලේෂණය කිරීම සඳහා, අපට දෛනික වෙනස්කම් නිරීක්ෂණය කිරීම සඳහා වාර්තා ගණන් කිරීමේ දත්ත පරිවර්තනය කළ හැකිය. පහත ප්‍රස්ථාරයේ පෙන්වා ඇති පරිදි මෙම වෙනස්කම් සාමාන්‍යයෙන් බිංදුව වටා දෝලනය වේ:












අපි සාමාන්‍ය ව්‍යාප්තියක් සමඟ මෙම වෙනස් වීමේ අනුපාතය නියෝජනය කරන විට, එය දත්ත සාමාන්‍යයෙන් බෙදා හරින බව පෙන්නුම් කරමින් සීනු වක්‍රයක් සාදයි. අපේක්ෂිත වෙනස 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 චෙක්පත් වල නිරවද්‍යතාවය සහ විශ්වසනීයත්වය වැඩි දියුණු කරමින් වඩාත් පිරිපහදු කළ ප්‍රවේශයක් ලබා දෙයි.


වඩාත් සංවේදී ඇඟවීම් නිෂ්පාදනය කිරීමට, ඔබට භාවිතා කළ හැක Autoregressive Integrated Moving Average (ARIMA) හෝ හෝල්ට්-වින්ටර්ස් ක්රමය . පළමුවැන්න ප්‍රවණතා සහිත දත්ත කට්ටල සඳහා ප්‍රමාණවත් වේ, නමුත් දෙවැන්න අපට ප්‍රවණතා සහ සෘතුමය බව යන දෙකින්ම දත්ත කට්ටල සමඟ ගනුදෙනු කිරීමට ඉඩ දෙයි. මෙම ක්‍රමය මට්ටම, ප්‍රවණතාවය සහ සෘතුමයභාවය සඳහා සංරචක භාවිතා කරයි, එමඟින් කාලයත් සමඟ සිදුවන වෙනස්කම් වලට නම්‍යශීලීව අනුවර්තනය වීමට ඉඩ සලසයි.


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 පුස්තකාලය භාවිතා කිරීමෙන් සහ සංඛ්‍යානමය ක්‍රම සහ කාල ශ්‍රේණි ඇල්ගොරිතම ඒකාබද්ධ කිරීමෙන්, ඔබට දත්ත අඛණ්ඩතාව සහ විශ්වසනීයත්වය සහතික කළ හැකි අතර අවසානයේ ඔබේ දත්ත කළමනාකරණ භාවිතයන් වැඩි දියුණු කරයි.


ඉහත විස්තර කර ඇති තාක්ෂණික ක්‍රම ක්‍රියාත්මක කිරීම ඔබට පහල යෙදුම් වල ඇති විය හැකි ගැටළු වලක්වා ගැනීමට සහ ඔබගේ දත්ත කාර්ය ප්‍රවාහයේ සමස්ත ගුණාත්මක භාවය වැඩි දියුණු කිරීමට උපකාරී වේ.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks