Ana içeriğe geç
Kesit SQL
İleri · Veri Mühendisliği

dbt ile SQL dönüşüm katmanı: modeller ve testler

Modern veri ekiplerinin SQL iş akışı: staging, marts, ref() ve veri testleri.

Uygulamada aç, 4 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

dbt nedir?

dbt (data build tool), veri ambarındaki dönüşümleri yalnızca SELECT sorgularıyla yazmanı sağlayan açık kaynaklı bir araçtır. Her model bir .sql dosyasıdır; dbt bu sorguları doğru sırayla çalıştırıp tablo veya görünüme çevirir, test eder ve belgeler. Snowflake, BigQuery, Databricks, PostgreSQL, SQL Server gibi ortamlarda kullanılır.

Katmanlar

KatmanGörevÖrnek
stagingKaynağı temizle: ad değiştir, tip dönüştür, boşlukları kırp. Kaynak başına bir model.stg_orders
intermediateAra birleştirmeler, iş kurallarıint_order_totals
martsİş birimine hazır olgu ve boyutlarfct_orders, dim_customers

Bir dbt modeli

-- models/staging/stg_signups.sql
SELECT DISTINCT
    id                     AS signup_id,
    TRIM(full_name)        AS full_name,
    LOWER(TRIM(email))     AS email,
    UPPER(TRIM(city))      AS city
FROM {{ source('crm', 'raw_signups') }}

-- models/marts/fct_orders.sql
SELECT o.order_id, o.customer_id, o.order_date, t.net_tutar
FROM {{ ref('stg_orders') }} o
JOIN {{ ref('int_order_totals') }} t USING (order_id)

{{ ref('...') }} başka bir modele başvurur. dbt bu başvurulardan bir bağımlılık grafiği (DAG) çıkarır ve modelleri doğru sırayla oluşturur. Ortama göre (geliştirme / canlı) doğru şema adını da kendisi yazar.

Materyalizasyon

Veri testleri aslında SQL sorgusudur

dbt'nin hazır testleri arka planda “hatalı satırları döndüren” sorgular üretir. Sonuç boşsa test geçer:

TestÜrettiği sorgunun mantığı
uniqueGROUP BY sutun HAVING COUNT(*) > 1
not_nullWHERE sutun IS NULL
accepted_valuesWHERE sutun NOT IN (...)
relationshipsÇocuk tabloda olup ebeveynde olmayan anahtarlar (LEFT JOIN ... IS NULL)
Alıştırmalara geç (4)