0Pricing
SQL Academy · Pelajaran

Menguji SQL: test dbt, Great Expectations

Tulis test kualitas data dengan dbt (unique, not_null, accepted_values) dan pernyataan yang lebih kaya dengan Great Expectations

Menguji SQL: test dbt, Great Expectations adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengapa Menguji SQL?

Data yang buruk tidak terlihat sampai menyebabkan keputusan yang buruk. Pengujian menemukan:

  • Pergeseran skema (kolom dihapus, tipe berubah)
  • Kualitas data (NULL di tempat yang dilarang, duplikat, di luar rentang)
  • Masalah referensial (baris yatim)
  • Invarian bisnis (pendapatan ≥ 0, total menjumlah dengan benar)

Pengujian dbt: Bawaan

Deklarasikan per kolom dalam 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']

Menjalankan Pengujian dbt

Jalankan semua pengujian:

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

Pengujian Tunggal Kustom

Pengujian hanyalah SELECT yang mengembalikan baris saat gagal:

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

Pengujian Generik

Pengujian berparameter untuk digunakan kembali pada banyak kolom:

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

Paket dbt-utils

Menambahkan lebih banyak pengujian: kombinasi unik, expression_is_true, equal_rowcount, dan sebagainya:

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

Great Expectations

Alternatif yang lebih berat — kerangka kerja Python dengan pustaka ekspektasi yang luas dan laporan yang kaya:

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

Kapan Menggunakan Masing-Masing

  • pengujian dbt — pilihan pertama jika Anda sudah menggunakan dbt; ringan, hanya SQL
  • Great Expectations — jika Anda memerlukan laporan yang kaya, pemeriksaan yang lebih luas, serta format di luar SQL (CSV/parquet)

Tingkat Keparahan Pengujian

dbt 1.0+ mendukung tingkat keparahan peringatan dan error:

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

Integrasi CI

Jalankan pengujian dalam setiap PR — cegah penggabungan jika gagal:

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

Dasbor Kualitas Data

dbt-utils + dbt-expectations + Elementary dapat mengubah hasil pengujian menjadi dasbor Grafana / Looker.

Pengujian Skema vs Pengujian Baris

Temukan regresi skema dengan "snapshot" dbt untuk tipe kolom; pengujian baris menemukan bug data.

Ringkasan

Pengujian mengubah SQL dari "percayalah" menjadi "terverifikasi".

  • Pengujian dbt untuk pendekatan deklaratif di dalam gudang data
  • Great Expectations untuk cakupan yang lebih luas dan lebih kaya
  • Jalankan dalam CI; cegah penggabungan jika gagal
  • Lacak hasil dari waktu ke waktu

Pemeriksaan Singkat

Anda ingin pengujian dbt yang gagal jika ada baris dengan total < 0. Apa pendekatan yang paling sederhana?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menguji SQL: test dbt, Great Expectations” gratis?

Ya — teks lengkap “Menguji SQL: test dbt, Great Expectations” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menguji SQL: test dbt, Great Expectations”?

Tulis test kualitas data dengan dbt (unique, not_null, accepted_values) dan pernyataan yang lebih kaya dengan Great Expectations Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Menguji SQL: test dbt, Great Expectations” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar DBT (Data Build Tool)
  2. SQLFluff dan Linting
  3. Menguji SQL: test dbt, Great Expectations
  4. CI untuk Perubahan Skema (GitHub Actions)
← Kembali ke SQL Academy