یادداشت های مطالعه 4.3.1 – اولین مدل های DBT را بسازید

1. مقدمه ای برای مدل های DBT
- DBT (ابزار ساخت داده) در بالای سیستم عامل های داده مانند BigQuery یا Postgres قرار دارد.
- عینی: داده های خام (به عنوان مثال ، داده های سفر تاکسی سبز و زرد) را به قالب های ساخت یافته و قابل استفاده برای ابزارهای BI تبدیل کنید.
- رویکرد: مدل سازی داده های مدولار با استفاده از میزهای واقعیت وت میزهای بعدیبشر
-
فرآیند:
- با داده های خام (منابع) شروع کنید.
- ساخت اسکریپت های SQL (مدل ها) را برای تمیز کردن ، اختصاص دادن ، بازسازی و تغییر نام داده ها بسازید.
- منطق کسب و کار را برای ایجاد جداول واقعیت و ابعادی اعمال کنید.
- داده های کل برای ذینفعان.
2. آناتومی یک مدل DBT
-
مدل پرونده های SQL هستند که حاوی هستند
SELECT
بیانیه ها -
مادی سازی: نحوه ذخیره مدل در پایگاه داده را تعیین می کند.
-
انواع تحقق:
- زودگذر: از نظر جسمی ذخیره نشده است. فقط در مدل های دیگر (مانند CTE) وجود دارد.
- نمایش: به عنوان نمای در پایگاه داده مادی شده است.
- جدول: به عنوان یک جدول فیزیکی ماده.
- افزایشی: فقط داده های جدید را در جدول به روز می کند (از بازآفرینی کل جدول جلوگیری می کند).
-
انواع تحقق:
-
ساختار پرونده:
- هر مدل یک است
.sql
پرونده - مثال:
model_name.sql
حاوی یکSELECT
بیانیه - DBT SQL را به DDL/DML کامپایل می کند (به عنوان مثال ،
CREATE TABLE AS SELECT
).
- هر مدل یک است
3. منابع تعیین کننده
- منابع: جداول داده خام بارگذاری شده در پایگاه داده (به عنوان مثال ، داده های سفر تاکسی سبز و زرد).
-
پیکربندی YAML:
-
فواید:
- پیچیدگی مکان های منبع را چکیده است.
- اجازه می دهد تست طراوت برای اطمینان از به روز بودن داده ها.
4. با استفاده از دانه ها
-
دانه: پرونده های CSV ذخیره شده در مخزن DBT (به عنوان مثال ،
taxi_zone_lookup.csv
). - هدف: مورد استفاده برای مجموعه داده های کوچک و استاتیک (به عنوان مثال ، جداول داده های اصلی).
-
فواید:
- کنترل نسخه
- می توان مانند سایر مدل های DBT مستند و آزمایش شد.
-
نمونه:
- بار
taxi_zone_lookup.csv
به عنوان یک دانه - برای غنی سازی داده های سفر با اطلاعات منطقه از آن در تحول استفاده کنید.
- بار
5. مدل سازی داده های مدولار
-
لایه:
-
مرحله بندی: داده های خام را تمیز و تهیه کنید.
- مثال:
stg_green_trip_data.sql
وتstg_yellow_trip_data.sql
بشر
- مثال:
-
هسته: جداول واقعیت و ابعادی ایجاد کنید.
- مثال:
fact_trips.sql
وتdim_zones.sql
بشر
- مثال:
-
مرحله بندی: داده های خام را تمیز و تهیه کنید.
6. ماکرو در DBT
- ماکرو: قطعه کد SQL قابل استفاده مجدد (مشابه توابع موجود در پایتون).
- هدف: وظایف تکراری را ساده کنید و SQL را به صورت پویا تولید کنید.
-
نمونه:
-
ماکرو برای تولید نوع پرداخت توضیحات:
{% macro get_payment_type_description(payment_type) %} CASE CAST({{ payment_type }} AS INTEGER) WHEN 1 THEN 'Credit Card' WHEN 2 THEN 'Cash' ELSE 'Unknown' END {% endmacro %}
-
-
استفاده:
7. بسته های DBT
- بسته ها: کتابخانه های ماکروها و مدل های قابل استفاده مجدد.
-
نمونه:
dbt_utils
بسته خدمات مشترکی را فراهم می کند (به عنوان مثال ،surrogate_key
). -
نصب:
-
استفاده:
-
مثال: یک کلید جانشین ایجاد کنید:
SELECT {{ dbt_utils.surrogate_key(['vendor_id', 'pickup_datetime']) }} AS trip_key
-
8. متغیرها در DBT
- متغیرها: مقادیر پویا که می توانند در سطح پروژه تعریف شوند یا در حین اجرا منتقل شوند.
-
استفاده:
-
تعریف در
dbt_project.yml
:vars: payment_type_values: [1, 2, 3, 4, 5, 6]
-
در یک مدل استفاده کنید:
{% if var('is_test_run', true) %} LIMIT 100 {% endif %}
-
-
اعدام:
9. ساخت و ساز و جداول ابعادی
-
جدول واقعیت: داده ها را از چندین منبع جمع می کند.
- مثال:
fact_trips.sql
داده های سفر سبز و زرد را ترکیب می کند. - هر دو مجموعه داده اتحادیه را بپیوندید و با آنها بپیوندید
dim_zones
برای اطلاعات منطقه
- مثال:
-
جدول ابعادی: زمینه ای را برای جداول واقعیت فراهم می کند.
- مثال:
dim_zones.sql
حاوی جزئیات منطقه (به عنوان مثال ، منطقه ، منطقه خدمات).
- مثال:
10. آزمایش و استقرار
-
تست:
-
اعزام:
- دویدن
dbt run
برای تهیه و اجرای مدل ها. - استفاده کردن
dbt build
برای اجرای مدل ها و تست ها با هم. -
مثال:
dbt build --vars '{"is_test_run": false}'
-
بهترین روش برای اجرای
dev limit
که می تواند در هنگام تولید با تنظیم ساده از بین برودdefault=false
:-- dbt build --select <model_name> --vars '{'is_test_run': 'false'}' {% if var('is_test_run', default=true) %} limit 100 {% endif %}
→ سریعتر ، ارزان تر و می تواند به عنوان کلان برای پیروی از روش خشک (تکرار خود را تکرار نکنید) ساخته شود.
- دویدن
11. مدیریت وابستگی و وابستگی
- نسب: نمای بصری وابستگی بین مدل ها.
-
فواید:
- درک کنید که چگونه داده ها از طریق خط لوله جریان می یابد.
- تأثیرات بالادست و پایین دست تغییرات را مشخص کنید.
-
نمونه:
-
fact_trips
بستگی داردstg_green_trip_data
باstg_yellow_trip_data
وتdim_zones
بشر
-
12 بهترین روشها
- تعدیل: تبدیل تبدیل به مدل های قابل استفاده مجدد.
- مستند سازی: از پرونده های YAML برای تهیه منابع ، مدل ها و آزمایشات استفاده کنید.
- کنترل نسخه: پروژه های DBT را در GIT برای همکاری و تاریخ ذخیره کنید.
- عمل: جداول بزرگ را به عنوان جداول (نه نمایش) برای عملکرد بهتر تحقق بخشید.
13. دستورات کلیدی
-
dbt run
: مدل ها را کامپایل و اجرا می کند. -
dbt test
: تست ها را روی مدل ها اجرا می کند. -
dbt build
: مدل ها و تست ها را با هم اجرا می کند. -
dbt deps
: بسته ها را نصب می کند. -
dbt compile
: SQL را بدون اجرای آن کامپایل می کند.
14. مثال ساختار پروژه
dbt_project/
├── models/
│ ├── staging/
│ │ ├── stg_green_trip_data.sql
│ │ ├── stg_yellow_trip_data.sql
│ ├── core/
│ │ ├── fact_trips.sql
│ │ ├── dim_zones.sql
├── seeds/
│ ├── taxi_zone_lookup.csv
├── macros/
│ ├── get_payment_type_description.sql
├── schema.yml
├── dbt_project.yml
├── packages.yml