الحبيبة التحليلية والحقائق والأبعاد ومخطط النجمة
5 دقيقة قراءة
أهداف الدرس
- تحديد حبيبة جدول حقائق بصياغة واضحة قبل بناء المقاييس.
- تمييز دور جداول الحقائق والأبعاد في نموذج نجمة مبسط.
- اكتشاف خطأ ناتج عن خلط مستويات تفصيل مختلفة واقتراح إصلاح.
قبل أن تجمع، حدد: صف واحد يمثل ماذا؟
أهم قرار مبكر في النموذج التحليلي هو الحبيبة أو مستوى التفصيل: ما الحدث أو الملاحظة التي يمثلها صف واحد في جدول الحقائق؟ قد يكون الصف طلب صيانة واحدًا، أو بندًا واحدًا داخل الطلب، أو لقطة يومية لحالة الطلب. هذه المستويات ليست متبادلة. إذا لم نحدد الحبيبة قبل إضافة المقاييس والعلاقات، قد نجمع أرقامًا من مستويات مختلفة ونحصل على نتائج تبدو معقولة لكنها لا تمثل السؤال المقصود.
جداول الحقائق والأبعاد
في نموذج النجمة، يخزن جدول الحقائق أحداثًا أو ملاحظات قابلة للقياس، بينما تصف جداول الأبعاد الكيانات التي نستخدمها للترشيح والتجميع. في حالتنا يمكن أن يحمل FactRequestLine معرف الطلب ومعرف القطعة والكمية والتكلفة، بينما تصف أبعاد مثل DimService وDimTeam وDimDate أسماء الخدمة والفريق والتاريخ وخصائصها. هذا الفصل يجعل من السهل أن نسأل: كم بلغت تكلفة القطع حسب الخدمة؟ أو حسب الفريق؟ أو عبر الأشهر؟ ويجعل معنى الصف والمفاتيح أوضح.
| الجدول | نوعه | مثال حقول | الدور التحليلي |
|---|---|---|---|
| FactRequestLine | حقيقة | RequestID, PartID, Quantity, PartCost | تجميع التكلفة والكمية عند حبيبة البند |
| DimService | بعد | ServiceKey, ServiceName, Category | ترشيح وتجميع بحسب الخدمة |
| DimTeam | بعد | TeamKey, TeamName, Region | ترشيح وتجميع بحسب الفريق والمنطقة |
| DimDate | بعد | DateKey, Date, Month, Year | تحليل زمني متسق |
لا يعني اسم «حقيقة» أن كل عمود فيه رقم نجمعه. قد توجد مفاتيح أو أعلام أو تواريخ. كما أن بعض المقاييس غير قابلة للجمع البسيط عبر كل الأبعاد. الرصيد في نهاية اليوم، مثلًا، لا يُجمع عبر الأيام بالطريقة نفسها التي نجمع بها قيمة المبيعات. الدرس هنا ليس حفظ أنواع المقاييس المتقدمة، بل التحقق من سؤالين قبل أي SUM: ما حبيبة الصف؟ وهل الجمع عبر هذا البعد يعطي معنى؟
اختبار الحبيبة بجملة واحدة
اكتب قبل بناء الجدول: «صف واحد يمثل …». مثال: «صف واحد يمثل بند قطعة مستخدمة في طلب صيانة مكتمل أو مفتوح». ثم اختبر الحقول: هل يمكن لكل حقل أن ينتمي بصورة منطقية إلى هذا البند؟ إذا أردنا تخزين قيمة عقد سنوية للفريق في كل بند، سنكرر القيمة مع كل طلب وقطعة، وعند جمعها ستتضخم. الأفضل وضعها في جدول آخر بحبيبة مناسبة أو حسابها بطريقة لا تكررها. هذه الجملة البسيطة تكشف كثيرًا من أخطاء النمذجة مبكرًا.
خلاصة الدرس
تحدد الحبيبة ما يمثله الصف، ويستخدم نموذج النجمة حقائق للأحداث القابلة للقياس وأبعادًا للوصف والترشيح. الخلط بين مستوى الطلب ومستوى البند قد يحول عدًا أو جمعًا صحيحًا حسابيًا إلى نتيجة خاطئة تحليليًا.