برنامه نویسی

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

1. مقدمه ای برای مدل های DBT

معرفی مدل های DBT

  • DBT (ابزار ساخت داده) در بالای سیستم عامل های داده مانند BigQuery یا Postgres قرار دارد.
  • عینی: داده های خام (به عنوان مثال ، داده های سفر تاکسی سبز و زرد) را به قالب های ساخت یافته و قابل استفاده برای ابزارهای BI تبدیل کنید.
  • رویکرد: مدل سازی داده های مدولار با استفاده از میزهای واقعیت وت میزهای بعدیبشر

نظریه مدل سازی داده های مدولار

  • فرآیند:

    • با داده های خام (منابع) شروع کنید.
    • ساخت اسکریپت های SQL (مدل ها) را برای تمیز کردن ، اختصاص دادن ، بازسازی و تغییر نام داده ها بسازید.
    • منطق کسب و کار را برای ایجاد جداول واقعیت و ابعادی اعمال کنید.
    • داده های کل برای ذینفعان.

2. آناتومی یک مدل DBT

  • مدل پرونده های SQL هستند که حاوی هستند SELECT بیانیه ها
  • مادی سازی: نحوه ذخیره مدل در پایگاه داده را تعیین می کند.

    • انواع تحقق:

      1. زودگذر: از نظر جسمی ذخیره نشده است. فقط در مدل های دیگر (مانند CTE) وجود دارد.
      2. نمایش: به عنوان نمای در پایگاه داده مادی شده است.
      3. جدول: به عنوان یک جدول فیزیکی ماده.
      4. افزایشی: فقط داده های جدید را در جدول به روز می کند (از بازآفرینی کل جدول جلوگیری می کند).

مادی ها در ابر DBT

  • ساختار پرونده:

    • هر مدل یک است .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. مدل سازی داده های مدولار

  • لایه:

    1. مرحله بندی: داده های خام را تمیز و تهیه کنید.

      • مثال: stg_green_trip_data.sql وت stg_yellow_trip_data.sqlبشر
    2. هسته: جداول واقعیت و ابعادی ایجاد کنید.

      • مثال: 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بشر

مدل سازی داده های مدولار NYC تاکسی عملی


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

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا