تنفيذ أبعاد متغيرة ببطء
بيانات الأبعاد تتغير مع مرور الوقت. ينتقل العملاء إلى مدن جديدة، ويتم تغيير أسماء المنتجات، وينتقل الموظفون بين الأقسام. الدور الأساسي لمستودع البيانات هو وصف الماضي بدقة، لذا تحتاج إلى استراتيجية للتعامل مع هذه التغيرات. أنماط الأبعاد المتغيرة ببطء (SCD) تحدد كيف يستجيب نموذجك البعدي عند تغير بيانات المصدر.
فهم أنواع SCD
تتطلب متطلبات الأعمال المختلفة طرقا مختلفة لتتبع التغيير. تتراوح أنواع SCD التالية من تجاهل التغييرات تماما إلى الحفاظ على سجلات تاريخية كاملة.
النوع 0: الاحتفاظ بالأصل
النوع 0 يحافظ على القيمة الأصلية ولا يسمح بالتغييرات أبدا. استخدم النوع 0 للبيانات المرجعية الثابتة التي لا ينبغي أن تتغير، مثل درجة الائتمان الأصلية عند التقديم أو تاريخ الميلاد.
النوع 1: الكتابة فوق
النوع 1 يكتب فوق القيمة الحالية بالقيمة الجديدة. لا يتم الحفاظ على أي تاريخ. هذا النهج مناسب عندما:
- التغيير هو تصحيح لخطأ.
- الدقة التاريخية للسمة المتغيرة ليست مهمة.
- تحتاج إلى أبسط صيانة ممكنة.
على سبيل المثال، إذا تغير عنوان بريد العميل الإلكتروني، فإن تحديث النوع الأول يستبدل البريد الإلكتروني القديم بالجديد. جميع الحقائق التاريخية المرتبطة بذلك العميل تعكس الآن عنوان البريد الإلكتروني الحالي.
ملحوظة
يمكن أن تؤثر التغيرات من النوع الأول على التحليل التاريخي. إذا تم إعادة تعيين مندوب المبيعات إلى منطقة جديدة وقمت باستبدالها، تظهر جميع مبيعاته السابقة تحت المنطقة الجديدة. فكر فيما إذا كان هذا السلوك يفي بمتطلبات الإبلاغ الخاصة بك.
النوع 2: إضافة صف جديد
النوع 2 يدرج صفا جديدا لكل تغيير، مع الحفاظ على السجل الكامل. الصف الأصلي يبقى، وكل نسخة من عضو البعد تحصل على مفتاح بديل خاص بها. هذا النوع من SCD شائع في السمات التي تكون فيها الدقة التاريخية مهمة.
يتطلب تنفيذ النوع 2 أعمدة إضافية:
| عمود | الغرض |
|---|---|
| تاريخ البدء | عندما أصبح هذا الإصدار فعالا |
| تاريخ الإنهاء | عندما تم استبدال هذا الإصدار (تستخدم الصفوف الحالية تاريخا مستقبليا بعيد مثل 9999-12-31) |
| العلم الحالي | يحدد النسخة النشطة للبحث أثناء تحميل جداول الحقائق |
عند حدوث تغيير، تقوم عملية ETL:
- يقوم بتحديث الصف الحالي عن طريق تعيين تاريخ نهايته وتغيير العلم الحالي إلى
FALSE. - يدرج صفا جديدا بقيم السمات الجديدة، ومفتاح بديل جديد، وتاريخ البداية المعين لتاريخ التغيير، والعلم الحالي المعين على
TRUE.
النوع الثاني ضروري عندما تحتاج إلى تحليل الماضي بدقة. على سبيل المثال، إذا كنت بحاجة للإبلاغ عن المبيعات حسب المنطقة التي تم تعيين مندوب المبيعات لها وقت كل عملية بيع، فإن تتبع النوع 2 يحافظ على هذا السياق.
النوع 3: إضافة عمود جديد
النوع 3 يضيف عمودا لتخزين القيمة السابقة بجانب القيمة الحالية. هذا النهج يتتبع تاريخا محدودا، وعادة ما يكون التغيير الأخير فقط.
على سبيل المثال، قد يشمل بعد مندوب المبيعات كلا العمودين CurrentSalesRegion والأعمدة PreviousSalesRegion معا. عندما يتحرك مندوب المبيعات، تنتقل المنطقة الحالية إلى العمود السابق، وتصبح المنطقة الجديدة حديثة.
النوع الثالث مفيد عندما تحتاج فقط إلى مقارنة الحالة الحالية مع حالة سابقة واحدة. ومع ذلك، لا يستخدم بشكل شائع لأنك تفقد جميع التغييرات الوسيطة.
النوع 6: النهج الهجين
النوع 6 يجمع بين عناصر من النوع 1 والنوع 2 والنوع 3. يحافظ على تاريخ الإصدارات الكامل (النوع 2) مع تخزين القيمة الحالية في كل صف (النوع 1 يكتب فوق عمود معين) والقيمة السابقة (النوع 3).
يتيح هذا المزيج للاستفسارات الوصول إلى السياق التاريخي والحالي من أي صف إصدار. ومع ذلك، تضيف تعقيدا لعملية ETL لأن كل صف لعضو البعد يجب تحديثه عند تغير القيمة الحالية.
اختر نوع SCD المناسب
استخدم الإرشادات التالية لاختيار نوع SCD المناسب:
| المتطلبات | النوع الموصى به |
|---|---|
| بيانات مرجعية ثابتة لا تتغير أبدا | النوع 0 |
| تصحيحات أو تاريخ غير ضروري | النوع 1 |
| مطلوب دقة تاريخية كاملة | النوع 2 |
| تحتاج فقط إلى مقارنة بين الوضع الحالي والسابق | النوع 3 |
| أحتاج إلى آراء حالية وتاريخية على كل صف | النوع 6 |
ضع في اعتبارك مقايضات التنفيذ
لكل نوع من SCD تداعيات على التكلفة والتعقيد:
- التخزين: تنمو أبعاد النوع 2 مع مرور الوقت مع تراكم صفوف الإصدارات الجديدة. خطط لزيادة التخزين وفكر في كيفية تأثير النمو على أداء الاستعلام.
- تعقيد الاستعلام: يتطلب ربط جداول الحقائق بأبعاد النوع 2 مطابقة في تواريخ الفعالية أو باستخدام العلم الحالي، مما يضيف تعقيدا للاستعلامات.
- تعقيد ETL: يتطلب النوع 2 والنوع 6 منطق ETL أكثر تطورا لاكتشاف التغييرات، وانتهاء صلاحية الصفوف القديمة، وإدخال نسخ جديدة.
- متطلبات الأعمال: يجب أن يكون اختيار نوع SCD مدفوعا باحتياجات العمل. لا تتابع السجل حيث لا يكون مطلوبا، ولا تتجاهل تتبع السجل حيث هو موجود.
نصيحة
تجنب تطبيق تتبع النوع 2 على كل سمة في بعد. تتبع التاريخ فقط على السمات التي تتطلب فيها الأعمال تحليلا تاريخيا. استخدم النوع 1 للبقية للحفاظ على البعد قابلا للإدارة.