4.2Power Pivot ونموذج البيانات ومقدّمة DAX
الأساسي في 30 ثانية
- الربط بدل التسوية: نموذج البيانات (Power Pivot) يربط عدة جداول بـعلاقات على مفتاح مشترك — فيستقي الجدول المحوري حينها من عدة جداول كأنها جدول واحد.
- DAX = حسابات مركزية: مقياس (مثل SUM(Ventes[Montant])) يعيش في النموذج ويُعاد حسابه حسب مرشّحات الجدول المحوري — حساب «رقم الأعمال» واحد لكل الجداول.
- ردّ فعل وسيم: متى تكاثرت XLOOKUP، حان وقت النمذجة — وهو الباب إلى Power BI (المفاهيم نفسها).
حالة مصغّرة متسلسلة — وسيم يتقاطع بين المبيعات والمنتجات دون XLOOKUP واحد
وسيم، محاسب في الجزائر، يحلّل رقم الأعمال حسب الفئة: كان جدولاه المبيعات (CodeProduit، Montant) والمنتجات (CodeProduit، Catégorie) يفرضان عليه XLOOKUP هشّة على آلاف الأسطر. يحمّل الجدولين في النموذج، وينشئ علاقة على CodeProduit، ويكتب مقياس Total Ventes. فيتقاطع جدوله المحوري بين الفئة (من المنتجات) والمقياس — دون XLOOKUP. المعلم الثاني للمسار الرئيسي: جدول Power Query من 4.1 يغذّي الآن نموذجاً حقيقياً.
تكملة حالة 4.1 — الجدول الذي نظّفه وسيم يدخل نموذج البيانات.
1. ربط الجداول بدل تسوية كل شيء
بدل كتابة XLOOKUP لجمع كل شيء في جدول عملاق واحد، نموذج البيانات (Power Pivot) يربط عدة جداول بـعلاقات (مفتاح مشترك، مثل CodeProduit). فيستطيع الجدول المحوري حينها الاستقاء من عدة جداول مرتبطة كأنها جدول واحد. هذا مبدأ قواعد البيانات داخل Excel — ويكسب فيه وسيم مصنّفات خفيفة وموثوقة.
تتطلّب العلاقة مفاتيح من النوع نفسه (نصّ مع نصّ، رقم مع رقم) وقِيَماً فريدة في جهة الأب: وإلّا فشل الوصل أو أنتج تكرارات. نتحقّق من الأنواع منذ Power Query قبل النمذجة.
2. مقياس DAX
DAX (Data Analysis eXpressions) لغة حساب النموذج. المقياس حساب قابل لإعادة الاستخدام وسياقي: Total Ventes := SUM(Ventes[Montant]) يُعاد حسابه حسب ما نرشّحه في الجدول المحوري (حسب المنطقة، الشهر…). يعيش المقياس في النموذج لا في خلية — وتتشاركه كل الجداول المحورية.
لا تخلطوا بين مقياس (سياقي، يُعاد حسابه بالمرشّح) وصيغة خلية (ثابتة، محلية): فالسياقية هي ما يمنح نموذج وسيم قوّته.
3. لماذا هو قوي
يدير النموذج أحجاماً ضخمة (أبعد بكثير من ورقة)، ويتفادى التكرار (لا XLOOKUP في كل مكان)، ويركّز الحسابات (مقياس «رقم الأعمال» يستخدمه كل الجداول المحورية). هذه درجات نحو Power BI، القائم على المفاهيم نفسها (نموذج + DAX).
عملياً: نحمّل الجداول المنظّفة (والمفضّل عبر Power Query) في النموذج بـإضافة إلى نموذج البيانات، ونعلن العلاقات، ونكتب المقاييس الأساسية، ثم نبني الجداول المحورية.
هل تعلم؟
الجدول المحوري مجرّد واجهة عرض؛ والنموذج هو المتجر.
🔎 مثال ملموس — 🔎 مثال ملموس — جدول محوري على جدولين مرتبطين
جدول المبيعات (CodeProduit، Montant) مرتبط بالمنتجات (CodeProduit، Catégorie):
العلاقة : Ventes[CodeProduit] → Produits[CodeProduit]
المقياس : Total Ventes := SUM(Ventes[Montant])
الجدول المحوري : Catégorie (de Produits) في الأسطر، [Total Ventes] في القيم
→ رقم الأعمال حسب الفئة دون أي XLOOKUP
// بديل: رقم أعمال الجزائر فقط
CA Alger := CALCULATE(SUM(Ventes[Montant]), Ventes[Ville] = "Alger")
القراءة: يتقاطع الجدول المحوري بين جدولين بفضل العلاقة، والمقياس يتبع المرشّحات.
الدرس: ننمذج (علاقات) بدل التسوية بضربات XLOOKUP.
مفردات القسم
- نموذج البيانات
- مجموعة جداول مرتبطة بعلاقات، مخزّنة في المصنّف.
مثال بسيط: يحمّل فيه وسيم المبيعات والمنتجات لتقاطعهما في جدول محوري.
ما ليس كذلك: جدول عملاق واحد مُسطَّح بضربات XLOOKUP.
رد فعل: عدة جداول للتقاطع بمرور الوقت: حمّلها في النموذج.
- العلاقة
- رابط بين جدولين عبر مفتاح مشترك (مثل CodeProduit)، بأنواع متطابقة.
مثال بسيط: يربط وسيم المبيعات والمنتجات على CodeProduit.
ما ليس كذلك: صيغة تنسخ قيمة سطراً بسطر.
رد فعل: للتقاطع بين جدولين: أعلن العلاقة على المفتاح.
- مقياس DAX
- حساب قابل لإعادة الاستخدام وسياقي يتكيّف مع مرشّحات الجدول المحوري.
مثال بسيط: يُعاد حساب Total Ventes لدى وسيم حسب الشهر والمدينة.
ما ليس كذلك: صيغة خلية ثابتة ومحلية.
رد فعل: حساب مشترك بين عدة جداول محورية: اكتب مقياساً.
- سياق المرشّح
- ما يُرشَّح في الجدول المحوري ويحدّد نتيجة المقياس.
مثال بسيط: الترشيح على الجزائر يعيد حساب رقم أعمال وسيم آلياً.
ما ليس كذلك: قيمة مجمّدة مستقلة عن المرشّحات.
رد فعل: مقياس مفاجئ: تحقّق أولاً من المرشّحات النشطة.
في التطبيق — عملياً — ربط جدولين
- حمّل جدولين (المبيعات، المنتجات) في نموذج البيانات.
- أنشئ علاقة على المفتاح المشترك (CodeProduit).
- أنشئ مقياساً بسيطاً: Total Ventes := SUM(Ventes[Montant]).
- أنشئ جدولاً محورياً يتقاطع بين عمود من المنتجات والمقياس، دون XLOOKUP.
سكربت جاهز للقول — اشرح النموذج لزميل (30 ثانية)
«هذا وسيم: بدل نسخ الفئات بـ XLOOKUP، ربطتُ الجدولين على رمز المنتج. يتقاطع الجدول المحوري مباشرة بين الجدولين، ويُعاد حساب مقياس رقم أعمالي حسب المرشّحات. حساب واحد لكل الجداول — وهذا يهيّئ لـ Power BI.»
قُله حين يقترح أحدهم «عمود XLOOKUP آخر»: أظهر الجدول المحوري متعدد الجداول.
قالب نسخ-لصق — مقاييس DAX أساسية
Total Ventes := SUM(Ventes[Montant])
Nb Ventes := COUNTROWS(Ventes)
Panier Moyen := DIVIDE([Total Ventes], [Nb Ventes])
CA Alger := CALCULATE(SUM(Ventes[Montant]), Ventes[Ville] = "Alger")
رقم الأعمال حسب الفئة
كما وسيم: علاقة المبيعات-المنتجات على CodeProduit، جدول محوري بالفئة في الأسطر والمقياس في القيم.
متابعة حسب المدينة
رشّح الجدول المحوري على الجزائر: يُعاد حساب المقياس نفسه دون صيغة جديدة.
أحجام ضخمة
مئات آلاف الأسطر: يستوعبها النموذج حيث تشبع الورقة.
مفاتيح بأنواع مختلفة
فشل العلاقة: أعد مواءمة الأنواع في Power Query (نصّ/نصّ)، ثم أعد إنشاء العلاقة.
✓ ممارسات جيدة
- نمذج بـعلاقات بدل التكرار.
- ركّز الحسابات في مقاييس.
- انظر إلى النموذج كباب نحو Power BI.
✗ أخطاء شائعة
- تسوية كل شيء بـ XLOOKUP (ثقيل، هشّ).
- علاقات على مفاتيح بأنواع مختلفة (فشل).
- الخلط بين مقياس (سياقي) وصيغة خلية (ثابتة).
النقاط الأساسية
- نموذج البيانات يربط عدة جداول بعلاقات.
- يمكن للجدول المحوري الاستقاء من عدة جداول مرتبطة.
- DAX: مقياس = حساب قابل لإعادة الاستخدام وسياقي.
- المفاهيم نفسها في Power BI (نموذج + DAX).
تحدّي 48 ساعة — طبّقه غداً
على جداولك الحقيقية: حمّل جدولين في النموذج، أنشئ العلاقة على المفتاح المشترك، اكتب مقياس SUM وتقاطع به في جدول محوري دون XLOOKUP.
- أعرف كيف أحمّل الجداول وأنشئ علاقة.
- أعرف كيف أكتب مقياس DAX بسيطاً وسياقياً.
- أعرف كيف أتقاطع عدة جداول في جدول محوري دون XLOOKUP.
أسئلة شائعة
نموذج البيانات أم XLOOKUP؟
XLOOKUP لجلب قيمة ظرفية؛ والنموذج لتحليل عدة جداول مرتبطة بمرور الوقت (أحجام ضخمة، حسابات مركزية). ومتى تكاثرت XLOOKUP، حان وقت النمذجة.
هل DAX صعب؟
المقاييس البسيطة (SUM، AVERAGE في النموذج) في المتناول؛ والقوّة (السياقات، CALCULATE) تتطلّب تمرّساً. نبدأ بمقاييس أساسية، تماماً كما بدأنا بـ =SUM.
ما فائدة علاقة في نموذج البيانات؟