یادداشت های مطالعه 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



