Ana içeriğe geç
Kesit SQL
İleri · Bitirme Projeleri

Bitirme projesi (Veri Mühendisi): ham kayıttan temiz boyut tablosuna ve veri testlerine

Staging, temizleme, tekilleştirme, boyut ve olgu tabloları, artımlı yükleme ve testler.

Uygulamada aç, 7 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ç.

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

  1. staging: ham verinin tip ve biçim olarak standartlaştırılmış kopyası
  2. temiz: tekilleştirilmiş, iş kurallarına uygun tablo
  3. mart: raporlamaya hazır özet
  4. 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ı

  1. 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.
  2. İş 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).
  3. 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

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çütBaşlangıçİyiMükemmel
TemizlikBiçimler düzeltilmişTekilleştirme kuralı yazılıİş anahtarı çatışmaları raporlanmış
TestlerYokHam veride üç testHer katmanda test, beklenen değer 0 ve satır mutabakatı
TeslimSQL dosyasıKatmanlı modellerModeller + testler + değişiklik notu + açık sorular
Alıştırmalara geç (7)