4.2 · Power Pivot ونموذج البيانات ومقدّمة DAX

المستوى 4 · خبير: Power Query، نموذج البيانات & VBA

4.2Power Pivot ونموذج البيانات ومقدّمة DAX

الهدف: فهم نموذج البيانات (علاقات بين الجداول) وفكرة مقياس DAX.
الوقت المقدّر: 14 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 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) في النموذج بـإضافة إلى نموذج البيانات، ونعلن العلاقات، ونكتب المقاييس الأساسية، ثم نبني الجداول المحورية.

خطأ شائع في الفهم: «مقياس DAX مجرّد صيغة في خلية، والنموذج بلا فائدة إن عرفت XLOOKUP». لا. المقياس يعيش في النموذج ويُعاد حسابه حسب سياق مرشّح الجدول المحوري — وصيغة الخلية تبقى ثابتة ومحلية. وتكديس XLOOKUP لتسوية كل شيء يعطي مصنّفاً ثقيلاً وهشّاً، بينما علاقة واحدة تُنجز التقاطع نفسه بنظافة، على أحجام ضخمة، بحسابات مركزية.
نموذج البيانات جداول مرتبطة بعلاقات + مقاييس DAX: منطق قواعد البيانات داخل Excel جداول مرتبطةعلاقات على مفتاح+نموذج البياناتPower Pivot+مقاييس DAXسياقية الربط على مفتاح بدل التكرار عبر XLOOKUP.
جداول مرتبطة بعلاقات + مقاييس DAX: منطق قواعد البيانات داخل Excel
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) يحمّل وسيم جدولَي المبيعات والمنتجات في نموذج البيانات. 2) ينشئ علاقة على المفتاح المشترك CodeProduit، بأنواع متطابقة. 3) يكتب مقياس Total Ventes الذي يجمع المبالغ. 4) يتقاطع جدوله المحوري بين الفئة (جدول المنتجات) والمقياس، دون أي XLOOKUP، وتتبع النتيجة المرشّحات. الدرس: نمذجة بالعلاقات، تركيز بالمقاييس، تحليل بالجداول المحورية.

هل تعلم؟

يمكن لجدول محوري متصل بنموذج أن يتقاطع بين ملايين الأسطر دون عرض أيٍّ منها في ورقة.
صحيح: النموذج يخزّن ويحسب في الخلفية — والورقة تُظهر النتيجة فقط.

الجدول المحوري مجرّد واجهة عرض؛ والنموذج هو المتجر.

🔎 مثال ملموس — 🔎 مثال ملموس — جدول محوري على جدولين مرتبطين

جدول المبيعات (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 لدى وسيم حسب الشهر والمدينة.

ما ليس كذلك: صيغة خلية ثابتة ومحلية.

رد فعل: حساب مشترك بين عدة جداول محورية: اكتب مقياساً.

سياق المرشّح
ما يُرشَّح في الجدول المحوري ويحدّد نتيجة المقياس.

مثال بسيط: الترشيح على الجزائر يعيد حساب رقم أعمال وسيم آلياً.

ما ليس كذلك: قيمة مجمّدة مستقلة عن المرشّحات.

رد فعل: مقياس مفاجئ: تحقّق أولاً من المرشّحات النشطة.

في التطبيق — عملياً — ربط جدولين

  1. حمّل جدولين (المبيعات، المنتجات) في نموذج البيانات.
  2. أنشئ علاقة على المفتاح المشترك (CodeProduit).
  3. أنشئ مقياساً بسيطاً: Total Ventes := SUM(Ventes[Montant]).
  4. أنشئ جدولاً محورياً يتقاطع بين عمود من المنتجات والمقياس، دون XLOOKUP.
تتقاطع عدة جداول عبر علاقات وتحسب بمقياس DAX.

سكربت جاهز للقول — اشرح النموذج لزميل (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.
تقييم ذاتي 1-5: هل أستطيع شرح الفرق بين مقياس وصيغة خلية؟هل ما زالت تقاطعاتي تعتمد على XLOOKUP هشّة؟

أسئلة شائعة

نموذج البيانات أم XLOOKUP؟

XLOOKUP لجلب قيمة ظرفية؛ والنموذج لتحليل عدة جداول مرتبطة بمرور الوقت (أحجام ضخمة، حسابات مركزية). ومتى تكاثرت XLOOKUP، حان وقت النمذجة.

هل DAX صعب؟

المقاييس البسيطة (SUM، AVERAGE في النموذج) في المتناول؛ والقوّة (السياقات، CALCULATE) تتطلّب تمرّساً. نبدأ بمقاييس أساسية، تماماً كما بدأنا بـ =SUM.

تحقّق من فهمك

ما فائدة علاقة في نموذج البيانات؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 4أسئلة جديدة وأصعب للتحقق من مكتسباتك