dbt / الأساسي: أسس المشروع والنماذج / الدرس 2
المصادر والتجهيز ورسوم الاعتماديات
أعلن مدخلات المكتبة وعلاقات النماذج دون إخفاء الاعتماد خلف أسماء علاقات ثابتة.
في هذه الصفحة
أهداف الدرس
- استخدم source وref لدورَي موارد مختلفين.
- راجع ترتيب الرسم ودوراته وحل الأسماء بين البيئات.
يصف إعلان المصدر علاقة خارج المشروع
يحمّل إجراء علوي جدول الإعارات الخام. يمنحه إعلان source اسماً داخل dbt لتتبع النسب والاختبارات وفحص الحداثة الاختياري؛ ولا ينسخ الجدول أويُنشئه. افصل المالك والموقع المادي عن الاسم المنطقي. قد تشير بيئة التطوير إلى قاعدة أخرى معتمدة، مع بقاء استدعاء الاسم المنطقي نفسه في SQL. يحتاج النقل تكويناً وصلاحيات مقصودين. ولا يثبت نجاح حل الاسم أن الخام حديث أومكتمل أوذو أنواع صحيحة.
أظهر الاسم المنطقي والمادي
يسمي المقطع مخططاً خيالياً raw_library وجدول loans. يصف مفتاح version صيغة ملف الموارد YAML، لا نسخة القاعدة أومراجعة تاريخ المصدر. تستطيع المشاريع ضبط database وschema وidentifier وفق النشر المعتمد. لا تضع أسراراً أوعناوين خاصة في وصف المصدر. اختبارات المصدر تأكيدات مستقلة، والحداثة إشارة زمنية مستقلة أيضاً؛ ولا يثبت أيهما اكتمال الأعمال عموماً. التكوين توضيحي ولا يحلله dbt أوينفذه أثناء التأليف.
version: 2
sources:
- name: library
schema: raw_library
tables:
- name: loans
إعلان مورد لعلاقة خيالية قائمة مسبقاً. لا ينشئ كائناً ولا يثبت حداثة البيانات.
جهز مصدراً واحداً بعقد تفسير محدود
يعيد نموذج التجهيز عادة تسمية الأعمدة ويختار الأنواع ويوحد القيم المضبوطة قرب حد المصدر. يستخدم المقطع source('library','loans') بدلاً من نص schema.table ثابت. ولا يَعِد اختيار مصدر واحد بصلاحية كل سجلاته؛ تظل سياسة التحليل والرفض صريحة. لا تدفن تجميع أعمال من مصادر متعددة في التجهيز لمجرد تقليل الملفات. توضح الطبقات أين بدأ خطأ عدد الإعارات: تفسير المصدر أم العلاقات أم التقرير النهائي.
select
loan_id,
branch_id,
borrowed_at,
returned_at
from {{ source('library', 'loans') }}
اختيار أعمدة للتجهيز فقط. مخطط المصدر وتفرّد المفتاح ومعنى الوقت افتراضات علوية صريحة.
الاعتماد معلومة تستخدم في جدولة التنفيذ
تسجل ref وsource العلاقات في رسم المشروع. إذا اعتمد fct_loans على stg_loans ثم daily_branch_activity على الأول، تبع ترتيب المتطلبات تلك الروابط. قد تكون للعقد المستقلة ترتيبات صحيحة متعددة، أما الدورة فلا ترتيب لها. قد يخفي الاسم الثابت اعتماداً رغم قدرة SQL على قراءته. وقد تعقد Jinja الشرطية اكتشاف العلاقات؛ فأظهر المطلوب بأنماط مدعومة. تحدد الحافة المتطلبات السابقة، لا نجاح كل اختبارات الجودة أوالحداثة فيها.
راجع أهداف البيئات دون إعادة كتابة SQL التجاري
تُحل المراجع وفق تسمية الموارد والهدف وسلوك الإرجاء المدعوم. إذا رأى المطور علاقة إنتاجية في المترجم، فليفحص السياق، لا يفترض أن ref تعني مخططه دائماً. استخدم بيئات معتمدة مستقلة وحسابات بأقل صلاحيات، وتحقق من الأسماء قبل التنفيذ المصرح. لا تتصل الدورة بقاعدة ولا تشغّل تحليل dbt أوترجمته أورسمه. يمكن للتحقق المحلي فحص دورات وروابط DAG صغيرة معلنة؛ وهو نموذج تفكير لا إثبات تحليل مشروع فعلي.
الأخطاء الشائعة وإصلاحها
يُفترض أن المصدر المعلن قد أُدخل فعلياً
- لماذا يحدث؟
- اختلطت بيانات المورد بتحميله العلوي.
- كيف تصلحه؟
- تحقق من العلاقة وأدلة الإدخال المعتمدة.
- كيف تتجنب تكراره؟
- وثق المالك وتوقعات التسليم.
تغيب أسماء العلاقات الثابتة عن النسب
- لماذا يحدث؟
- تجاوزت مراجع SQL إعلان الرسم عبر ref أوsource.
- كيف تصلحه؟
- استخدم مرجع المورد المناسب وراجع الاعتماديات.
- كيف تتجنب تكراره؟
- افحص الروابط عند مراجعة النموذج.
يحتوي رسم النماذج دورة
- لماذا يحدث؟
- تعتمد طبقتان إحداهما على الأخرى مباشرة أوبواسطة.
- كيف تصلحه؟
- افصل المدخلات المشتركة أوأعد تصميم حد الطبقات.
- كيف تتجنب تكراره؟
- احفظ اتجاهاً واضحاً للمتطلبات وفحوص الدورات.
اختبر فهمك
1. هل تنشئ source("library","loans") العلاقة raw_library.loans؟
اعرض الحل المشروح
لا. تحل علاقة خارجية معلنة وتسجل نسبها. يجب أن ينشئها الإجراء العلوي المعتمد ويملأها. تحقق من المخطط والتسليم والصلاحيات مستقلة، ثم طبق الاختبارات والحداثة وفق نطاقها الدقيق.
2. ما الترتيب المطلوب للتجهيز ثم الحقيقة ثم التقرير اليومي؟
اعرض الحل المشروح
يسبق التجهيز الحقيقة، وتسبق الحقيقة التقرير. قد تعمل فروع مستقلة بترتيبات صحيحة أخرى. تمنع الدورة الترتيب؛ ولا يحل إخفاء المرجع باسم ثابت الاعتماد الأصلي.
أهم ما تعلمته
- تصف المصادر المدخلات الخارجية، وتربط refs الموارد المنمذجة.
- يحتاج النسب والتسمية المادية وجودة المصدر أدلة مستقلة.