0Pricing
SQL Academy · درس

أساسيات DBT (أداة بناء البيانات)

نمذج بيانات مستودع البيانات على هيئة عبارات SELECT في dbt، باستخدام refs وsources والنماذج التزايدية

أساسيات DBT (أداة بناء البيانات) درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما هو dbt

يمثل dbt الحرف «T» في ELT، إذ يحوّل البيانات داخل مستودع البيانات باستخدام عبارات SELECT. وتعرّف النماذج، وهي عبارات SELECT، ثم ينشئها dbt فعليًا على هيئة جداول أو عروض، ويدير التبعيات، ويشغّل الاختبارات.

لماذا dbt؟

قبل dbt، كانت عمليات التحويل موجودة في نصوص SQL مخصصة أو إجراءات مخزنة أو مهام Python. ويقدم dbt ما يلي:

  • SQL معياري على هيئة شيفرة، مع إدارته بالإصدارات في Git
  • رسم بياني للتبعيات باستخدام ref() بدلًا من الترتيب اليدوي
  • الاختبارات بوصفها عناصر أساسية
  • إنشاء التوثيق

بنية المشروع

مشروع dbt:

my_project/
  dbt_project.yml
  models/
    staging/
      stg_orders.sql
    marts/
      fct_revenue.sql
  tests/
  seeds/
  macros/

ملف نموذج

مجرد SELECT في ملف .sql:

-- models/staging/stg_orders.sql
{{ config(materialized='view') }}
SELECT
  id,
  user_id,
  total,
  created_at
FROM {{ source('raw', 'orders') }}

أنواع materialisation

  • view — ينشئ dbt عرضًا VIEW؛ سريع التحديث وأبطأ في الاستعلام
  • table — جدول كامل؛ يُعاد إنشاؤه في كل تشغيل
  • incremental — تُضاف الصفوف الجديدة فقط
  • ephemeral — CTE مضمّن، من دون كائن في قاعدة البيانات

ref() والتبعيات

أشِر إلى نموذج من نموذج آخر:

-- models/marts/fct_revenue.sql
SELECT
  date_trunc('day', created_at) AS day,
  SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1

تشغيل dbt

أنشئ المشروع كاملًا:

dbt run                    # build all models
dbt run --select staging   # subset
dbt run --select +fct_revenue   # this model and upstream
dbt build                   # run + test

المصادر

توثّق المصادر الجداول الأولية وتشير إليها:

# models/sources.yml
sources:
  - name: raw
    database: warehouse
    tables:
      - name: orders

النماذج التزايدية

بالنسبة إلى جداول الحقائق الضخمة:

{{ config(materialized='incremental', unique_key='id') }}
SELECT *
FROM {{ source('raw','orders') }}
{% if is_incremental() %}
  WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}

قوالب Jinja

يجمع dbt بين SQL وJinja، لذا يمكنك إنشاء SQL باستخدام الحلقات والشروط:

{% set tiers = ['free','pro','enterprise'] %}
SELECT user_id,
{% for t in tiers %}
  COUNT(*) FILTER (WHERE tier = '{{ t }}') AS {{ t }}_count {% if not loop.last %},{% endif %}
{% endfor %}
FROM users GROUP BY user_id

اللقطات

التقاط الأبعاد التي تتغير ببطء تلقائيًا:

{% snapshot user_snapshot %}
  {{ config(
    target_schema='snapshots',
    unique_key='id',
    strategy='timestamp',
    updated_at='updated_at',
  ) }}
  SELECT * FROM {{ source('raw','users') }}
{% endsnapshot %}

التوثيق

أنشئ توثيقًا قابلًا للتصفح تلقائيًا من نماذجك ووصف YAML:

dbt docs generate
dbt docs serve     # opens browser

خلاصة

ينمذج dbt تحويلات البيانات على هيئة شيفرة SQL.

  • النموذج = SELECT في ملف .sql
  • تبني ref() الرسم البياني غير الدوري (DAG)
  • أنواع materialisation: view / table / incremental / ephemeral
  • الاختبارات والتوثيق عنصران أساسيان

اختبار سريع

ماذا تفعل {{ ref('stg_orders') }} في dbt؟

الأسئلة الشائعة

هل درس «أساسيات DBT (أداة بناء البيانات)» مجاني؟

نعم — نص درس «أساسيات DBT (أداة بناء البيانات)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «أساسيات DBT (أداة بناء البيانات)»؟

نمذج بيانات مستودع البيانات على هيئة عبارات SELECT في dbt، باستخدام refs وsources والنماذج التزايدية تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أساسيات DBT (أداة بناء البيانات)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات DBT (أداة بناء البيانات)
  2. SQLFluff وفحص الأسلوب
  3. اختبار SQL: اختبارات dbt وGreat Expectations
  4. التكامل المستمر لتغييرات المخطط (GitHub Actions)
← العودة إلى SQL Academy