Senaryo
Pazarlama formlarından gelen raw_signups verisi kirli: büyük/küçük harf karışık, tekrar eden satırlar, iki farklı tarih biçimi. Ayrıca fiyat güncellemeleri ayrı bir dosyadan geliyor. Senden temiz tablolar ve bunları koruyan testler isteniyor.
Katmanlar
- staging: ham verinin tip ve biçim olarak standartlaştırılmış kopyası
- temiz: tekilleştirilmiş, iş kurallarına uygun tablo
- mart: raporlamaya hazır özet
- test: her katmanın doğruluğunu denetleyen sorgular
NotHer adım boş bir veritabanında ayrı denetlendiği için, önceki adımın tablosu gerekiyorsa adımın içinde yeniden oluşturulur. Gerçek projede bu adımlar bir dbt modeli veya saklı yordam zinciri olur.
Derinleş: boru hattını teslim etmek
Brif: Veri platformu yöneticisi“Pazarlama, form kayıtlarını her gece CRM'e aktarmak istiyor. Temiz tabloyu ve testleri cuma günü üretime alacağız; test kırmızıysa yükleme durmalı. Bana model kodu, test listesi ve bir sayfalık değişiklik notu ver.”
Çalışma planı
- Ham veriyi profille. Aşağıdaki sorgu: 52 satır, 40 tekil id, 20 satır GG.AA.YYYY biçiminde, 10 satırda şehir boş ya da boşluk.
- İş anahtarını belirle. Tekilleştirme
idüzerinden mi, e-posta üzerinden mi? İkisi farklı sonuç verir; karar iş biriminindir, sen veriyle soruyu hazırlarsın (Ek görev 2). - Kuralları yaz, sonra kodla. “E-posta küçük harf ve kırpılmış”, “boş şehir NULL”, “tarih ISO biçiminde”. Her kural bir teste dönüşür.
SELECT COUNT(*) AS satir, COUNT(DISTINCT id) AS tekil_id,
SUM(CASE WHEN signup_date LIKE '__.__.____' THEN 1 ELSE 0 END) AS nokta_bicim,
SUM(CASE WHEN city IS NULL OR TRIM(city) = '' THEN 1 ELSE 0 END) AS sehir_bos
FROM raw_signups;
Kontrol listesi
- Satır mutabakatı. ham satır − elenen tekrar = temiz satır: 52 − 12 = 40. Elenen her satırın nedeni bilinmeli.
- Benzersizlik testi. Temiz tabloda
idtekrarı sıfır olmalı (Adım 5'teki testin temiz tabloya uygulanmışı). - Değer kümesi testi. Standart şehir sütunu yalnızca beklenen değerleri içermeli (Ek görev 1).
- Tekrar çalıştırma. Model iki kez çalışınca aynı sonucu vermeli (idempotent); artımlı yüklemede aynı güncelleme iki kez uygulanırsa fiyat değişmemeli.
Teslim
Değişiklik notu: katmanlar, kurallar, test listesi (ad, sorgu, beklenen = 0) ve açık sorular.
Yönetici özeti örneğiHam 52 satır 40 tekil kayda indi; 12 id tekrarlıydı ve 20 satırın tarihi ISO biçimine çevrildi. Şehir alanındaki 7 farklı yazım 3 standart değere indirildi; 6 kaydın şehri bilinmiyor. Açık soru: can.kaya@gmail.com iki farklı id'de kayıtlı; aynı kişi mi, iş biriminin kararı gerekiyor.
Kendini değerlendir
| Ölçüt | Başlangıç | İyi | Mükemmel |
|---|---|---|---|
| Temizlik | Biçimler düzeltilmiş | Tekilleştirme kuralı yazılı | İş anahtarı çatışmaları raporlanmış |
| Testler | Yok | Ham veride üç test | Her katmanda test, beklenen değer 0 ve satır mutabakatı |
| Teslim | SQL dosyası | Katmanlı modeller | Modeller + testler + değişiklik notu + açık sorular |