dbt / المتوسط: التاريخ والمسارات المضبوطة / الدرس 9
اللقطات والتاريخ المرصود
تتبّع سمات الفروع المتغيرة مع تمييز زمن تغير المصدر والرصد والتاريخ التجاري الكامل.
في هذه الصفحة
أهداف الدرس
- اشرح استراتيجيتي timestamp وcheck للقطات.
- حدد المفاتيح الثابتة وسياسة الحذف ومعنى استعلام الفترات.
لا تستعيد اللقطة الدورية كل تغير لم يُرصد
قد تتغير service_level للفرع مع احتفاظ المصدر بالحالة الحالية فقط. تحفظ اللقطة نسخاً مرصودة بنمط بعد بطيء التغير مدعوم، ولا تعوض سجل أحداث كاملاً؛ فقد يختفي تغيران بين التشغيلات إذا بقيت النهائية. حدد الأسئلة التاريخية التي يجيب عنها تواتر الرصد. افصل المفتاح الثابت من الاسم المتغير. ويُفسد إعادة استخدام الهوية لفرع آخر المعنى رغم صلاحية SQL والبيانات الوصفية تقنياً.
استخدم تكوين لقطة الجيل المختار
يتاح تعريف YAML في أساس v1.12، وقد أُدخل هذا النمط في جيل1.9. يشير إلى تجهيز سابق ويستخدم updated_at دليلاً لتغير المصدر. يحتاج timestamp تقدماً موثوقاً عند تغير المتتبع؛ فقد يفوت تغير حمولة بلا تغير الوقت. تقارن check أعمدة مضبوطة ولها اعتبارات وقت مختلفة. ولا تتحقق أي منهما آلياً من تفرّد المصدر. لا ينفذ المثال أمراً أويُنشئ علاقة أويغير تاريخاً.
snapshots:
- name: snap_branch_service
relation: ref('stg_branches')
config:
unique_key: branch_id
strategy: timestamp
updated_at: updated_at
تعريف لقطة توضيحي. تحتاج العلاقة وموثوقية الوقت ودعم المحوّل تحققاً مستقلاً.
تتبع بيانات الصلاحية ساعة الاستراتيجية الموثقة
في timestamp، تملأ أوقات updated_at المصدر حقول الصلاحية والتغير وفق الوثائق. لا يجعل تشغيل10:30 الذي يرى تغير10:00 وقت التغير10:30. يظهر الخط تغيراً لاحقاً11:00 رُصد11:30؛ فتنتهي النسخة الأولى11:00 وتبدأ التالية هناك وفق النموذج. الفترات اصطناعية لا صفوف ملتقطة. وقد يختلف updated_at من وقت بدء سياسة الأعمال فعلياً؛ فلا تعمم الصلاحية التقنية كزمن سريان تجاري.
source version A:updated_at10:00, observed10:30
source version B:updated_at11:00, observed11:30
local timestamp-strategy model:A valid[10:00,11:00), B current from11:00
تفسير فترات محلي بافتراضات الوقت المذكورة، دون لقطة محرك أوقياس ساعة.
تحتاج الصفوف الغائبة سياسة حذف صريحة
تستخدم النسخ الحالية عادة dbt_valid_to بقيمة NULL إلا إذا غُيرت بعلامة حالية مضبوطة. معالجة الحذف الصلب إعداد مستقل اختياري بحدود نسخة ومحوّل؛ وتعني ignore وinvalidate وnew_record تواريخ مختلفة. لا تعامل استخراجاً ناقصاً مؤقتاً كحذف فرع. أثبت الاكتمال قبل تفسير الغياب. واحترم نهاية الفترة في الربط كي لا تطابق إعارة نسختين عند الحد. اختبر الحالي والتاريخي والغائب والمحذوف اصطناعياً.
احمِ تاريخ اللقطة كأصل بيانات
حالة اللقطة تاريخ متراكم؛ فلا يعيد تغيير الكود نسخاً فقدها المصدر. تميز الوثائق سلوكها من التحديث الشامل التزايدي؛ فلا تفترض أن علم نموذج يعيد التاريخ بطريقة مدعومة. خطط للنسخ والترحيل والبيانات الوصفية والمطابقة وفق الهدف. تحقق من المستهلك إذا تغيرت الأسماء أودلالة الحالية. لا تنفذ الدورة لقطة أونسخاً أوقاعدة؛ تفحص الفترات وقصد التكوين فقط، لا تطبيق SCD أوالمعاملات أواكتمال مصدر حقيقي.
الأخطاء الشائعة وإصلاحها
يفوت timestamp حمولة تغيرت
- لماذا يحدث؟
- لم يتقدم updated_at مع التغير.
- كيف تصلحه؟
- أصلح دليل التغير أوقيّم check مبررة.
- كيف تتجنب تكراره؟
- اختبر سمة متغيرة ووقتاً ثابتاً.
يُسجل استخراج ناقص كحذف جماعي
- لماذا يحدث؟
- فُسر الغياب قبل إثبات اكتمال المصدر.
- كيف تصلحه؟
- تحقق من نطاق الاستخراج وسياسة الحذف.
- كيف تتجنب تكراره؟
- احرس المدخل بفحوص التسليم.
تُسمى صلاحية اللقطة زمن سريان الأعمال الدقيق
- لماذا يحدث؟
- اختلط وقت التغير التقني بتاريخ سياسة المجال.
- كيف تصلحه؟
- وثق ساعة المصدر وأضف تاريخ سريان المجال إذا لزم.
- كيف تتجنب تكراره؟
- سمِّ الرصد والتغير والسريان منفصلة.
اختبر فهمك
1. وقت التغير10:00 ورصدته اللقطة10:30. ما بداية النسخة في نموذج timestamp؟
اعرض الحل المشروح
وفق الاستراتيجية المذكورة يزود updated_at10:00 بيانات البداية. حدث الرصد لاحقاً، ولا يثبت ذلك سريان السياسة واقعياً10:00؛ فله ساعة وضمان مصدر مستقلان.
2. هل تستعيد لقطة يومية تغيرين حدثا ثم عادا بين التشغيلات؟
اعرض الحل المشروح
ليس من مصدر حالي لم يحتفظ بالنسختين. تحفظ المرصود ولا تخترع الغائب. استخدم سجل تغييرات أوتواتراً مناسباً، واذكر حدود التاريخ الباقية.
أهم ما تعلمته
- تاريخ اللقطات حالة مرصودة وفق استراتيجية محددة.
- تحتاج مفاتيح المصدر وساعاته وحذفه وتعافيه عقوداً صريحة.