dbt (data build tool) SQL ilə yazılan data transformasiyalarına proqram mühəndisliyi intizamı gətirdi: versiya nəzarəti, modulluq, avtomatik test, sənədləşmə — hamısı SQL-in yanında. 2021-2024 arasında dünya standartına çevrilən dbt, Türkiyədə də son 18 ayda sürətlə yayılır. Bəs nə etmək, nədən qaçmaq lazımdır?
1. Staging → Intermediate → Marts qatlanması
dbt layihələrinin ən vacib intizamı üç qatlı təşkilatdır:
models/staging/: mənbə sistem məlumatının yüngül təmizlənmiş forması (adın dəyişdirilməsi, tip çevirmə, null handling).models/intermediate/: iş məntiqi — business logic, birləşmələr, hesablamalar.models/marts/: son istifadəçi üçün hazır fact/dimension cədvəlləri.
Bu qatlanma pozulduqda, dəyişikliyin haradan qaynaqlandığı bilinməz hala gəlir.
2. ref və source funksiyaları
Modellər bir-birinə birbaşa SQL JOIN ilə deyil, {{ ref('other_model') }} ilə bağlanmalıdır. Bu, dbt-yə asılılıq qrafını çıxarmaq və doğru sıra ilə işlətmək imkanı verir. Mənbə cədvəl istinadları isə {{ source('schema', 'table') }} ilə olmalıdır.
3. Test intizamı
Hər modelin ən azı üç növ testi olmalıdır:
uniquevənot_nullprimary key üzərində.accepted_valuesenum sütunlarında.relationshipsforeign key əlaqələrində.
Custom test üçün tests/ qovluğuna SQL yazılır. CI pipeline-da testlər uğursuz olarsa deploy dayanmalıdır.
4. Incremental modellər
Böyük fact cədvəlləri hər işə düşdükdə full-refresh etməməlidir. materialized='incremental' və unique_key ilə is_incremental() makrosu istifadə olunaraq yalnız yeni məlumatları işləyən modellər qurulmalıdır.
5. Exposures və sənədləşmə
exposures.yml faylı dbt layihəsinin istehlak etdiyi downstream sistemləri (BI hesabatları, ML modelləri) təyin edir. Bu sayədə model silinmədən əvvəl istifadəçiləri görünür. docs/ və schema.yml izahları ilə dbt docs generate avtomatik data lüğəti yaradır.
6. Semantic Layer / Metrics
dbt Metrics (və ya dbt Semantic Layer) ilə "aktiv müştəri sayı" kimi biznes metrikləri bir yerdə təyin edilir və Power BI, Looker, API-dən ardıcıl formada istehlak edilir.
7. Macro və paket ekosistemi
dbt-utils, dbt-expectations kimi icma paketləri hazır makrolar və testlər təqdim edir. Təkəri yenidən ixtira etmək yerinə bu paketləri qiymətləndirmək lazımdır.
8. Performans: materialization strategiyası
Hər model view, table, incremental və ya ephemeral ola bilər. Kiçik transformasiya addımları ephemeral (CTE), son mart-lar table, böyük fact-lər incremental olmalıdır. Yanlış seçim ya performansı, ya xərci yeyir.
9. CI/CD
Slim CI — yalnız dəyişən modelləri və onların downstream-lərini işə salmaq — 30 dəqiqəlik pipeline-ları 3 dəqiqəyə endirir. dbt build --select state:modified+ --defer bu yanaşmanın əsasıdır.
Qaçılacaq anti-patternlər
- Staging qatında biznes məntiqi.
- Tək bir mart modelinin 500+ sətrlik SQL-ə çevrilməsi.
- Test əskikliyi səbəbiylə istehsalda duplikatların aşkarlanması.
- Incremental modellərdə gec gələn məlumat üçün
mergeyerinəinsert.
