SQL Testleri: dbt testleri, Great Expectations
dbt ile (unique, not_null, accepted_values) veri kalitesi testleri ve Great Expectations ile daha kapsamlı doğrulamalar yazın.
SQL Testleri: dbt testleri, Great Expectations, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
SQL'i Neden Sınamalı?
Kötü veriler kötü bir karara yol açana kadar görünmez. Sınamalar şunları yakalar:
- Şema kayması (sütun silinmiş, tür değiştirilmiş)
- Veri kalitesi (yasak olan yerde NULL değerleri, yinelenenler, aralık dışı değerler)
- Başvuru bütünlüğü sorunları (yetim satırlar)
- İş değişmezleri (gelir ≥ 0, toplamlar doğru toplanır)
Yerleşik dbt Sınamaları
Sütun başına YAML içinde bildirin:
# 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 Sınamalarını Çalıştırma
Tüm sınamaları çalıştırın:
dbt test
dbt test --select orders
dbt build # = run + testÖzel Tekil Sınamalar
Bir sınama, başarısız olduğunda satır döndüren yalnızca bir SELECT sorgusudur:
-- tests/no_negative_totals.sql
SELECT id, total
FROM {{ ref('orders') }}
WHERE total < 0Genel Sınamalar
Birçok sütunda yeniden kullanılabilen parametreli sınamalar:
-- 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: 120dbt-utils Paketi
Daha fazla sınama ekler: benzersiz bileşimler, expression_is_true, equal_rowcount vb.:
- dbt_utils.expression_is_true:
expression: "revenue >= 0"
- dbt_utils.equal_rowcount:
compare_model: ref('staging_orders')Great Expectations
Daha kapsamlı bir alternatif — geniş bir beklenti kitaplığına ve ayrıntılı raporlara sahip bir Python çatısı:
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')Hangisini Ne Zaman Kullanmalı
- dbt sınamaları — zaten dbt kullanıyorsanız ilk tercih; hafif ve yalnızca SQL kullanır
- Great Expectations — ayrıntılı raporlara, daha geniş doğrulamalara ve SQL dışındaki biçimlere (CSV/parquet) ihtiyaç duyduğunuzda
Sınama Önem Derecesi
dbt 1.0+, uyarı ve hata önem derecelerini destekler:
- accepted_values:
values: [...]
config:
severity: warn
warn_if: ">100"
error_if: ">1000"CI Tümleştirmesi
Her PR'da sınamaları çalıştırın — başarısızlıkta birleştirmeyi engelleyin:
# GitHub Actions
- run: dbt deps && dbt build --profiles-dir profiles
- if: failure()
run: echo "::error::dbt tests failed"Veri Kalitesi Panoları
dbt-utils + dbt-expectations + Elementary, sınama sonuçlarını Grafana / Looker panosuna dönüştürebilir.
Şema Sınamaları ve Satır Sınamaları
Sütun türlerinin dbt'deki "anlık görüntüsü" ile şema gerilemelerini yakalayın; satır sınamaları veri hatalarını yakalar.
Özet
Sınama, SQL'i "bana güvenin" yaklaşımından "doğrulandı" yaklaşımına dönüştürür.
- Bildirimsel ve ambar içinde çalışan dbt sınamaları
- Daha kapsamlı ve ayrıntılı kullanım için Great Expectations
- CI içinde çalıştırın; başarısızlıkta süreci engelleyin
- Sonuçları zaman içinde izleyin
Hızlı Kontrol
Herhangi bir satırda total < 0 olduğunda başarısız olan bir dbt sınaması istiyorsunuz. En basit yaklaşım nedir?
Sıkça Sorulan Sorular
“SQL Testleri: dbt testleri, Great Expectations” dersi ücretsiz mi?
Evet — “SQL Testleri: dbt testleri, Great Expectations” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“SQL Testleri: dbt testleri, Great Expectations” dersinde ne öğreneceğim?
dbt ile (unique, not_null, accepted_values) veri kalitesi testleri ve Great Expectations ile daha kapsamlı doğrulamalar yazın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“SQL Testleri: dbt testleri, Great Expectations” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- DBT (Data Build Tool) Temelleri
- SQLFluff ve Kod Denetleme
- SQL Testleri: dbt testleri, Great Expectations
- Şema Değişiklikleri için CI (GitHub Actions)