Texniki Dərinlik

dbt ilə modul data transformasiyası: ən yaxşı praktikalar

dbt son illərdə data transformasiyasının standartına çevrildi. Modul, test edilə bilən və dayanıqlı pipeline-lar üçün doqquz praktika.

BIART Ekibi3 dəq oxu
Kod ve modüler dönüşüm görseli

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. refsource 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:

  • uniquenot_null primary key üzərində.
  • accepted_values enum sütunlarında.
  • relationships foreign 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'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 merge yerinə insert.

Nəticə

Paylaş