2.2مخطط النجمة (Star Schema): الحقائق (Facts) والأبعاد (Dimensions)
الأساسي في 30 ثانية
- الحقائق = ما نقيسه (مبيعات، وطلبات: سطور كثيرة ومبالغ)؛ الأبعاد = بماذا نحلل (منتجات، وعملاء، وتواريخ: تسميات).
- يضع مخطط النجمة (Star Schema) جدول الحقائق في المركز والأبعاد حوله، مربوطة بـ 1:* — وهذه هي قاعدة هندسة Power BI.
- وهي ليست مسألة جمال: فالنجمة تجعل DAX أبسط، والأداء أفضل، والتقارير أوثق؛ والجدول الواحد مضاد نمط.
حالة مصغّرة متسلسلة — زينب تفتّت جدولها الواحد إلى نجمة
كدّست زينب، مراقبة التسيير في شركة صغيرة للصناعة الغذائية بالجزائر، كل شيء في جدول واحد كبير «المبيعات»: المدينة والمندوب والمنتج والمبالغ مختلطة. فتطبق القاعدة: تميّز الحقائق (المبلغ، الكمية) عن الأبعاد (المدينة، المندوب، المنتج)، ثم تصنع في Power Query بُعد المندوبين (مضاعفة الاستعلام، الاحتفاظ بالعمود، إزالة التكرارات)، وكذلك المدن والمنتجات. وفي الحقائق، لا تحتفظ إلا بالمفاتيح والمقاييس، وتربط كل بُعد بـ 1:*، وترتب نجمتها في عرض النموذج (Model View). وتدوّن المنعكس: تحديد الحبيبية والحفاظ عليها (سطر واحد = عملية بيع واحدة، في كل مكان).
حالة مستقلة لهذا القسم: تعود في الدرس والمخطط والنص البرمجي وتحدي 48 ساعة للقسم 2.2.
1. الحقائق والأبعاد
مخطط النجمة (Star Schema) هو قاعدة هندسة Power BI، التي تؤكدها Microsoft: في المركز، جدول الحقائق (Fact Table) (الأحداث القابلة للقياس — مبيعات، وطلبات؛ سطور كثيرة ومبالغ)؛ وحوله، الأبعاد (Dimensions) (محاور التحليل — منتجات، وعملاء، وتواريخ؛ سطور قليلة وتسميات). ويشير كل بُعد نحو الحقائق بواحد-إلى-متعدد: فيتشكل رسم نجمة. وتحفظ زينب الجملة المفتاحية: الحقائق = ما نقيسه؛ والأبعاد = بماذا نحلل.
2. لماذا النجمة
ليست مسألة جمال: فالنجمة تجعل DAX أبسط، والأداء أفضل، والتقارير أوثق. وعلى العكس، الجدول الواحد — كل شيء في جدول كبير واحد — «يعمل» في البداية، ثم يتدهور DAX والأداء. وتستثمر زينب ساعة نمذجة توفر عليها أيامًا.
3. صنع الأبعاد
البُعد له سطر واحد لكل عنصر، دون تكرار؛ ويصنعه Power Query في ثلاث نقرات (مضاعفة الاستعلام، الاحتفاظ بالعمود، إزالة التكرارات). ونحدد أيضًا الحبيبية (Granularity) للحقائق — سطر واحد = عملية بيع واحدة، في كل مكان — ولا نخلطها أبدًا. ولا تحتفظ زينب في الحقائق إلا بالمفاتيح نحو الأبعاد والمقاييس.
🔎 مثال ملموس — 🔎 مثال ملموس — إنشاء بُعد
تستخرج زينب بُعد المندوبين في ثلاث نقرات:
في Power Query، انطلاقًا من المبيعات:
مضاعفة الاستعلام ← الاحتفاظ بـ المندوب ← إزالة التكرارات
← بُعد المندوبون (سطر واحد لكل مندوب)
الحقائق: لا تحتفظ إلا بالمفاتيح + المقاييس؛ واربط بـ 1:*.
القراءة: البُعد = سطر واحد لكل عنصر (مندوب واحد مرة واحدة)، دون تكرار.
الدرس: نصنع الأبعاد في Power Query، ولا ندخلها يدويًا.
مفردات القسم
- جدول الحقائق (Fact Table)
- الأحداث المطلوب قياسها: سطر واحد = معاملة واحدة، مع المفاتيح نحو الأبعاد والقيم الرقمية.
مثال بسيط: تحتفظ زينب بجدول المبيعات مع المبالغ والمفاتيح.
ما ليس كذلك: مرجع تسميات دون حدث.
رد فعل: سطور كثيرة + مبالغ ← حقائق.
- جدول البُعد (Dimension Table)
- محور تحليل: سطر واحد = عنصر فريد، مع سماته الوصفية.
مثال بسيط: تصنع زينب بُعد المنتجات والمدن والمندوبين.
ما ليس كذلك: أحداث متكررة بمبالغ.
رد فعل: تسميات + سطر واحد لكل عنصر ← بُعد.
- مخطط النجمة (Star Schema)
- الحقائق في المركز، والأبعاد حولها، وعلاقات 1:*: الهندسة المرجعية لنماذج Power BI.
مثال بسيط: تضع زينب المبيعات في المركز وأبعادها حولها.
ما ليس كذلك: كل شيء في جدول كبير واحد.
رد فعل: نمذجة ← فكّر بنجمة.
- الحبيبية (Granularity)
- مستوى تفصيل سطر الحقائق (العملية؟ سطر الطلب؟ اليوم؟).
مثال بسيط: تقرر زينب: سطر واحد = عملية بيع واحدة، في كل مكان.
ما ليس كذلك: سطور بمستويات تفصيل مختلطة.
رد فعل: حدّد الحبيبية بوعي وحافظ عليها.
- الجدول الواحد (Single Table) (مضاد النمط)
- كل شيء في جدول كبير واحد: «يعمل» في البداية، ثم يتدهور DAX والأداء.
مثال بسيط: تفتّت زينب جدولها الواحد لتحوّله إلى نجمة.
ما ليس كذلك: حقائق تحيط بها أبعاد مربوطة.
رد فعل: الجدول الواحد = دين يجب سداده سريعًا.
في التطبيق — تطبيق عملي — إعادة تشكيل مبيعاتك إلى نجمة
- حلّل جدول مبيعاتك: أي الأعمدة حقائق (المبلغ، الكمية) وأيها يصف أبعادًا (المدينة، المندوب، المنتج)؟
- في Power Query، أنشئ بُعد المندوبين: ضاعف استعلام المبيعات ← احتفظ بعمود المندوب ← إزالة التكرارات. وافعل الشيء نفسه للمدن عند الاقتضاء.
- في جدول الحقائق، لا تحتفظ إلا بالمفاتيح والمقاييس؛ واربط كل بُعد بـ 1:*.
- عرض النموذج (Model View): ضع الحقائق في المركز، والأبعاد حولها — نجمتك الأولى. وتأكد أن مرئي المندوب × المبلغ ما زال يعمل.
نص برمجي خطوة بخطوة — بناء نجمة مثل زينب (10 دقائق)
1) اسرد أعمدتك وصنّفها: مبالغ/كميات = حقائق، وتسميات = أبعاد. 2) ضاعف استعلام المبيعات في Power Query، واحتفظ بعمود المندوب، وأزل التكرارات: فيُنشأ بُعد المندوبين. 3) أعد الكرّة للمدن والمنتجات. 4) في المبيعات، لا تحتفظ إلا بالمفاتيح والمقاييس. 5) عرض النموذج (Model View): الحقائق في المركز، والأبعاد حولها، وكل رابط بـ 1:*، ثم تحقق من مرئي المندوب × المبلغ.
يجب أن يكون للبُعد سطر واحد لكل عنصر: إذا بقي تكرار، فسيُرفض 1:*.
نموذج للنسخ واللصق — خطة نجمتي
الحقائق (ما نقيسه): ___ (مثال المبيعات: المبلغ، الكمية — مفاتيح + مقاييس)
الأبعاد (بماذا نحلل): ___ (المنتجات، المدن، المندوبون، التواريخ)
حبيبية الحقائق: سطر واحد = ___ (مثال عملية بيع واحدة)، في كل مكان
كل بُعد ← الحقائق بـ 1:*
النجمة: الحقائق في المركز، والأبعاد حولها. مضاد النمط: الجدول الواحد.
استخراج المندوبين
تضاعف زينب المبيعات، وتحتفظ بالمندوب، وتزيل التكرارات: بُعد نظيف في ثلاث نقرات.
استخراج المدن
تكرر زينب الاستخراج للمدن: فيصبح كل محور تحليل بُعدًا مستقلًا.
تفكيك الجدول الواحد
كان جدول كبير واحد يخلط كل شيء: تفصله زينب إلى حقائق + أبعاد من أجل DAX بسيط.
الحفاظ على الحبيبية
تثبّت زينب سطر واحد = عملية بيع واحدة وتلتزم به: فتبقى التراكمات والنسب موثوقة.
✓ ممارسات جيدة
- فكّر بـ الحقائق = ما نقيسه، والأبعاد = بماذا نحلل.
- اصنع الأبعاد في Power Query (مضاعفة ← الاحتفاظ بالعمود ← إزالة التكرارات).
- حدّد وحافظ على حبيبية الحقائق (سطر واحد = عملية بيع واحدة، في كل مكان).
✗ أخطاء شائعة
- البقاء في الجدول الواحد (يتدهور DAX والأداء).
- خلط الحبيبيات في جدول الحقائق.
- ترك تكرارات في بُعد.
النقاط الأساسية
- الحقائق = ما نقيسه؛ والأبعاد = بماذا نحلل.
- النجمة ليست اختيارية: DAX البسيط والأداء والموثوقية يتوقفان عليها.
- البُعد = سطر واحد لكل عنصر، دون تكرار — ويصنعه Power Query في ثلاث نقرات.
- حدّد حبيبية الحقائق وحافظ عليها: سطر واحد = عملية بيع واحدة، في كل مكان.
تحدي 48 ساعة — طبّقه غدًا
أعد تشكيل جدول من زينب إلى نجمة: صنّف أعمدته إلى حقائق وأبعاد، وأنشئ بُعدًا واحدًا على الأقل في Power Query (مضاعفة ← الاحتفاظ بالعمود ← إزالة التكرارات)، ورتّب الحقائق في المركز والأبعاد حولها في عرض النموذج (Model View).
- أميّز جدول الحقائق من جدول البُعد.
- أصنع بُعدًا في Power Query دون تكرار.
- أرتّب الحقائق والأبعاد في نجمة بعلاقات 1:*.
أسئلة شائعة
جدولي الواحد يعمل جيدًا: لماذا أغيّر؟
يعمل حتى أول الحسابات المتطورة (ذكاء الوقت، والنسب حسب البُعد، ومقارنات N-1) وأول ملايين السطور. فالجدول الواحد يعقّد DAX، ويعطل الأداء، ويهشّش التقارير (مخاطر العد المزدوج). وتكلف النجمة ساعة الآن وتوفر أيامًا لاحقًا — وهي نصيحة الممارسين و Microsoft بالإجماع.
أين يذهب جدول التواريخ في هذا المخطط؟
إنه بُعد قائم بذاته — بكل هذه الأهمية حتى خُصّص له قسم (2.5): يرتبط بالحقائق عبر التاريخ (التواريخ[التاريخ] ← المبيعات[التاريخ] بـ 1:*)، ويغذّي كل التحليل الزمني. ويجب أن يكون متواصلًا (سطر واحد لكل يوم)، ومُعلَّمًا رسميًا، وفريدًا لكل النموذج.
ما هو مخطط النجمة؟