أساسيات 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات DBT (أداة بناء البيانات)
- SQLFluff وفحص الأسلوب
- اختبار SQL: اختبارات dbt وGreat Expectations
- التكامل المستمر لتغييرات المخطط (GitHub Actions)