SQL Academy · पाठ

SQL का परीक्षण: dbt tests, Great Expectations

dbt (unique, not_null, accepted_values) से डेटा गुणवत्ता परीक्षण लिखें और Great Expectations से अधिक समृद्ध अभिकथन जोड़ें

पाठ 3, कुल 4 में से14 चरण

SQL का परीक्षण: dbt tests, Great Expectations, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

SQL का परीक्षण क्यों करें?

खराब डेटा तब तक दिखाई नहीं देता, जब तक वह किसी गलत निर्णय का कारण न बन जाए। परीक्षण इन चीज़ों को पकड़ते हैं:

  • स्कीमा में बदलाव (कॉलम हटना, प्रकार बदलना)
  • डेटा की गुणवत्ता (जहाँ निषिद्ध हो वहाँ NULLs, डुप्लिकेट, सीमा से बाहर के मान)
  • संदर्भ-संबंधी समस्याएँ (अनाथ पंक्तियाँ)
  • व्यावसायिक स्थिर शर्तें (revenue ≥ 0, योग सही होना)

dbt परीक्षण: अंतर्निहित

YAML में प्रत्येक कॉलम के लिए घोषित कीजिए:

# models/orders.yml
version: 2
models:
  - name: orders
    columns:
      - name: id
        tests:
          - unique
          - not_null
      - name: user_id
        tests:
          - not_null
          - relationships:
              to: ref('users')
              field: id
      - name: status
        tests:
          - accepted_values:
              values: ['pending', 'paid', 'cancelled']

dbt परीक्षण चलाना

सभी परीक्षण चलाइए:

dbt test
dbt test --select orders
dbt build  # = run + test

कस्टम एकल परीक्षण

परीक्षण केवल ऐसा SELECT है जो विफल होने पर पंक्तियाँ लौटाता है:

-- tests/no_negative_totals.sql
SELECT id, total
FROM {{ ref('orders') }}
WHERE total < 0

सामान्य परीक्षण

कई कॉलम में दोबारा उपयोग के लिए पैरामीटर वाले परीक्षण:

-- tests/generic/test_in_range.sql
{% test in_range(model, column_name, min, max) %}
SELECT * FROM {{ model }}
WHERE {{ column_name }} < {{ min }} OR {{ column_name }} > {{ max }}
{% endtest %}

-- Use it in YAML:
columns:
  - name: age
    tests:
      - in_range:
          min: 0
          max: 120

dbt-utils पैकेज

यह अतिरिक्त परीक्षण जोड़ता है: विशिष्ट संयोजन, expression_is_true, equal_rowcount आदि:

- dbt_utils.expression_is_true:
    expression: "revenue >= 0"
- dbt_utils.equal_rowcount:
    compare_model: ref('staging_orders')

Great Expectations

अधिक विस्तृत विकल्प — एक Python फ़्रेमवर्क, जिसमें अपेक्षाओं की व्यापक लाइब्रेरी और समृद्ध रिपोर्टें हैं:

import great_expectations as ge

suite = context.add_or_update_expectation_suite('orders')
batch = context.get_validator(batch_request, expectation_suite_name='orders')
batch.expect_column_values_to_not_be_null('id')
batch.expect_column_values_to_be_between('total', 0, 10000)

results = context.run_checkpoint('orders_checkpoint')

किसका उपयोग कब करें

  • dbt परीक्षण — जब आप पहले से dbt का उपयोग कर रहे हों, तब पहली पसंद; हल्का और केवल SQL पर आधारित
  • Great Expectations — जब आपको समृद्ध रिपोर्ट, व्यापक दावे और SQL से आगे के फ़ॉर्मैट (CSV/parquet) चाहिए

परीक्षण की गंभीरता

dbt 1.0+ चेतावनी और त्रुटि की गंभीरता का समर्थन करता है:

- accepted_values:
    values: [...]
    config:
      severity: warn
      warn_if: ">100"
      error_if: ">1000"

CI एकीकरण

हर PR में परीक्षण चलाइए — विफलता होने पर मर्ज रोक दीजिए:

# GitHub Actions
- run: dbt deps && dbt build --profiles-dir profiles
- if: failure()
  run: echo "::error::dbt tests failed"

डेटा गुणवत्ता डैशबोर्ड

dbt-utils + dbt-expectations + Elementary, परीक्षण परिणामों को Grafana / Looker डैशबोर्ड में बदल सकते हैं।

स्कीमा परीक्षण बनाम पंक्ति परीक्षण

dbt के कॉलम प्रकारों के "snapshot" से स्कीमा में होने वाले प्रतिगमन पकड़िए; पंक्ति परीक्षण डेटा की त्रुटियाँ पकड़ते हैं।

पुनरावलोकन

परीक्षण SQL को "मुझ पर भरोसा कीजिए" से "सत्यापित" में बदल देता है।

  • घोषणात्मक, वेयरहाउस के भीतर होने वाले परीक्षणों के लिए dbt परीक्षण
  • अधिक व्यापक और समृद्ध जाँचों के लिए Great Expectations
  • CI में चलाइए; विफलता पर रोक लगाइए
  • समय के साथ परिणामों पर नज़र रखिए

त्वरित जाँच

आप ऐसा dbt परीक्षण चाहते हैं जो किसी भी पंक्ति में total < 0 होने पर विफल हो जाए। सबसे सरल तरीका क्या है?

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
46
पाठ
183

अक्सर पूछे जाने वाले प्रश्न

क्या “SQL का परीक्षण: dbt tests, Great Expectations” पाठ निःशुल्क है?

हाँ—“SQL का परीक्षण: dbt tests, Great Expectations” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“SQL का परीक्षण: dbt tests, Great Expectations” में मैं क्या सीखूँगा?

dbt (unique, not_null, accepted_values) से डेटा गुणवत्ता परीक्षण लिखें और Great Expectations से अधिक समृद्ध अभिकथन जोड़ें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“SQL का परीक्षण: dbt tests, Great Expectations” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. DBT (Data Build Tool) की मूल बातें
  2. SQLFluff और लिंटिंग
  3. SQL का परीक्षण: dbt tests, Great Expectations
  4. स्कीमा बदलावों के लिए CI (GitHub Actions)
← SQL Academy पर वापस जाएँ