2.4 · مقدمة إلى DAX: SUM، AVERAGE، COUNT

المستوى 2 · النموذج و DAX

2.4مقدمة إلى DAX: SUM، AVERAGE، COUNT

الهدف: كتابة قاعدة مقاييس نظيفة ومنسقة وقابلة لإعادة الاستخدام — والتآلف مع CALCULATE في حالة بسيطة.
الوقت المقدّر: 20 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • DAX = لغة الحساب في Power BI (نفسها مثل Power Pivot): نبدأ بـ SUM، AVERAGE، COUNT/COUNTROWS، MIN، MAX.
  • DIVIDE يحل محل «/» منهجيًا: القسمة المحصنة، فلا خطأ قسمة على صفر بعد الآن.
  • CALCULATE يقيّم تعبيرًا بتعديل المرشح — «رقم الأعمال، لكن لباريس»؛ وإتقانه الكامل يشغل المستوى 3.

حالة مصغّرة متسلسلة — زينب تكتب قاعدة مقاييسها

تريد زينب، مراقبة التسيير في شركة صغيرة للصناعة الغذائية بالجزائر، ثلاثة مؤشرات: رقم الأعمال، وعدد المبيعات، ومتوسط السلة. فتكتب قاعدة مقاييس: إجمالي المبيعات = SUM(المبيعات[المبلغ])، وعدد المبيعات = COUNTROWS(المبيعات)، ثم متوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات]) — ملاحظةً أن مقياسًا يشير إلى آخر. وتنسّق كل واحد (€، وفاصل الآلاف، والكسور). ثم تتآلف مع CALCULATE: مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس")، وحصة باريس = DIVIDE([مبيعات باريس], [إجمالي المبيعات]) منسقة بنسبة %. ثلاثة مقاييس تتركب: فزينب تكتب DAX حقيقيًا بالفعل.

حالة مستقلة لهذا القسم: تعود في الدرس والمخطط والنص البرمجي وتحدي 48 ساعة للقسم 2.4.

1. التجميعات الأساسية

DAX (تعابير تحليل البيانات (Data Analysis Expressions)) هي لغة الحساب في Power BI — نفسها مثل Power Pivot في Excel. نبدأ بالتجميعات البسيطة: SUM، AVERAGE، COUNT/COUNTROWS، MIN، MAX، وDIVIDE — القسمة المحصنة التي تتفادى أخطاء القسمة على صفر. وتدوّن زينب أول عادة جيدة: تُبنى المقاييس باللبنات، ويمكن لمقياس (بل يجب) أن يشير إلى غيره.

2. لمحة عن CALCULATE

ثم الدالة التي تغير كل شيء: CALCULATE، التي تقيّم تعبيرًا بتعديل المرشح. «رقم الأعمال، لكن لباريس فقط»: مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس"). ويشغل إتقانها الكامل المستوى 3؛ وهنا نتآلف معها في حالة بسيطة. وتكرر زينب الجملة: «احسب هذا، بهذا المرشح».

3. التسمية والتنسيق

عادات جيدة منذ اليوم الأول: تسمية كل مقياس بوضوح وتنسيقه (€، و%، والكسور) — فتقرير بالأرقام الخام ليس منتهيًا. ونستخدم DIVIDE بدل «/»، ونرتب المقاييس في جدول مخصص. وتنسّق زينب كل مقياس عند إنشائه، دون استثناء.

خطأ شائع في الفهم: «DAX هي Excel تمامًا: أقسّم بـ «/»، وأترك الأرقام خامة، وأتعلم CALCULATE في دقيقتين». لا، ثلاثة أخطاء. تتشابه الصياغة مع Excel، لكن المنطق يختلف: يحسب DAX في سياقات (المرئي، والمرشحات)، لا في خلايا. ونقسّم بـ DIVIDE لتفادي القسمة على صفر. وننسّق كل مقياس عند إنشائه — فالأرقام الخام تصنع تقريرًا غير منتهٍ. أما CALCULATE فيُتقن في المستوى 3.
DAX الأساسي لبنات تتركب: تجميعات، ثم DIVIDE، ثم CALCULATE. التجميعاتSUM, AVERAGE, COUNTROWS, MIN, MAX+DIVIDEقسمة محصنة (لا مزيد من /0)+CALCULATE«احسب هذا، بهذا المرشح» نسّق كل مقياس عند إنشائه (€، و%، والكسور).
لبنات تتركب: تجميعات، ثم DIVIDE، ثم CALCULATE.
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) تكتب زينب، مراقبة التسيير بالجزائر، أول مقاييسها بلغة DAX: التجميعات الأساسية SUM، وAVERAGE، وCOUNTROWS، وMIN، وMAX على أعمدة — وDIVIDE للقسمة المحصنة، فلا خطأ قسمة على صفر بعد الآن. 2) وتركّب قاعدة باللبنات: إجمالي المبيعات = SUM(المبيعات[المبلغ])، وعدد المبيعات = COUNTROWS(المبيعات)، ومتوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات]) — فمقياس يشير إلى آخر. 3) وتتآلف مع CALCULATE — «رقم الأعمال، لكن لباريس»: مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس") — وتحفظ العادات الجيدة: تسمية واضحة وتنسيق كل مقياس. الدرس: البناء باللبنات، وDIVIDE منهجيًا، والتنسيق عند الإنشاء.

🔎 مثال ملموس — 🔎 مثال ملموس — ثلاثة مقاييس تتركب

قاعدة DAX لدى زينب، من الأبسط إلى الأكثر تركيبًا:

إجمالي المبيعات = SUM(المبيعات[المبلغ])
عدد المبيعات    = COUNTROWS(المبيعات)
متوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات])
مبيعات باريس     = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس")
حصة باريس   = DIVIDE([مبيعات باريس], [إجمالي المبيعات])   // منسقة بنسبة %

القراءة: [متوسط السلة] يشير إلى [إجمالي المبيعات] و[عدد المبيعات]: فالمقاييس تُبنى باللبنات.

الدرس: DIVIDE يتفادى القسمة على صفر؛ وCALCULATE يضيف مرشحًا دون إعادة كتابة الصيغة.

مفردات القسم

DAX
لغة المقاييس والأعمدة المحسوبة: دوال بنمط Excel، لكنها تُقيَّم في سياق نموذج.

مثال بسيط: تكتب زينب أول مقاييسها بلغة DAX.

ما ليس كذلك: صيغة Excel لا تنظر إلا إلى خلايا.

رد فعل: DAX = حسابات في سياقات.

SUM / AVERAGE / MIN / MAX
التجميعات الأساسية على عمود: SUM(المبيعات[المبلغ]).

مثال بسيط: تحسب زينب إجمالي المبيعات = SUM(المبيعات[المبلغ]).

ما ليس كذلك: مجموع مكتوب يدويًا في مرئي.

رد فعل: عمود يجب تجميعه ← SUM، AVERAGE، MIN، MAX.

COUNTROWS مقابل COUNT
يعد COUNTROWS(المبيعات) سطور جدول؛ وتعد COUNT القيم غير الفارغة لعمود.

مثال بسيط: تعد زينب مبيعاتها بـ COUNTROWS(المبيعات).

ما ليس كذلك: مجموع مبالغ، وهو ليس عدًّا.

رد فعل: عد الأحداث ← COUNTROWS(جدول).

DIVIDE
DIVIDE(البسط؛ المقام؛ [عند_الصفر]): القسمة المحصنة، فلا خطأ على صفر بعد الآن.

مثال بسيط: تكتب زينب متوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات]).

ما ليس كذلك: قسمة بـ «/» يمكن أن تُرجع خطأ.

رد فعل: دائمًا DIVIDE بدل «/».

CALCULATE
دالة DAX: تقيّم تعبيرًا في سياق مرشح معدَّل.

مثال بسيط: تكتب زينب مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس").

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

رد فعل: «احسب هذا، بهذا المرشح».

في التطبيق — تطبيق عملي — قاعدة مقاييسك

  1. أنشئ المقاييس الأساسية: إجمالي المبيعات = SUM(المبيعات[المبلغ])، وعدد المبيعات = COUNTROWS(المبيعات)، ومتوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات]) — لاحظ إعادة استخدام مقاييس في مقياس، مثل زينب.
  2. نسّق كل مقياس (تبويب أدوات المقياس): € للمبالغ، وفاصل الآلاف، و0 أو 1 كسر.
  3. أول CALCULATE: مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس") — ضعها في بطاقة بجانب إجمالي المبيعات.
  4. وواحدة أخرى: حصة باريس = DIVIDE([مبيعات باريس], [إجمالي المبيعات]) منسقة بنسبة % — ثلاثة مقاييس تتركب.
قاعدة مقاييس نظيفة ومنسقة وقابلة لإعادة الاستخدام — وCALCULATE متآلف معها في حالة بسيطة.

نص برمجي خطوة بخطوة — كتابة قاعدة DAX مثل زينب (8 دقائق)

1) مقياس جديد: إجمالي المبيعات = SUM(المبيعات[المبلغ]). 2) مقياس جديد: عدد المبيعات = COUNTROWS(المبيعات). 3) متوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات]) — فأنت تعيد استخدام مقاييس في مقياس. 4) نسّق كل مقياس (€، والآلاف، والكسور). 5) CALCULATE: مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس")، ثم حصة باريس = DIVIDE([مبيعات باريس], [إجمالي المبيعات]) بنسبة %. 6) رتّب كل شيء في جدول «_المقاييس».

إذا ترددت في دالة DAX، فمرجع dax.guide (SQLBI) يوثّق كل واحدة بأمثلة.

نموذج للنسخ واللصق — قاعدة مقاييسي

إجمالي المبيعات = SUM(المبيعات[المبلغ])
عدد المبيعات    = COUNTROWS(المبيعات)
متوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات])
مبيعات باريس     = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس")
حصة باريس   = DIVIDE([مبيعات باريس], [إجمالي المبيعات])   // %
القواعد: DIVIDE (لا «/» أبدًا)؛ ونسّق كل مقياس؛ وجدول «_المقاييس».

رقم الأعمال

تكتب زينب إجمالي المبيعات = SUM(المبيعات[المبلغ]): المقياس الأساسي لكل لوحة قيادتها.

عدد المبيعات

تعد زينب معاملاتها بـ عدد المبيعات = COUNTROWS(المبيعات)، وهو أوثق من COUNT على عمود.

متوسط السلة

متوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات]): مقياس مركّب يستند إلى مقياسين آخرين.

رقم أعمال باريس

مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس"): رقم الأعمال نفسه، لكن مرشّحًا على باريس.

✓ ممارسات جيدة

  • بناء المقاييس باللبنات (مقياس يشير إلى أخرى).
  • DIVIDE بدل «/» منهجيًا.
  • تنسيق كل مقياس عند إنشائه (€، و%، والكسور).

✗ أخطاء شائعة

  • القسمة بـ «/» (خطر خطأ القسمة على صفر).
  • ترك أرقام خام غير منسقة (تقرير غير منتهٍ).
  • الاعتقاد بإتقان CALCULATE دفعة واحدة (عمقها في المستوى 3).

النقاط الأساسية

  • تُبنى المقاييس باللبنات: يمكن لمقياس (بل يجب) أن يشير إلى غيره.
  • DIVIDE يحل محل «/» منهجيًا: فلم تعد القسمة على صفر موجودة.
  • CALCULATE = «احسب هذا، بهذا المرشح»: الجملة التي تُكرَّر.
  • نسّق كل مقياس عند إنشائه: فتقرير بالأرقام الخام ليس منتهيًا.

تحدي 48 ساعة — طبّقه غدًا

ركّب قاعدة زينب: اكتب إجمالي المبيعات = SUM(المبيعات[المبلغ])، وعدد المبيعات = COUNTROWS(المبيعات)، ومتوسط السلة = DIVIDE([إجمالي المبيعات], [عدد المبيعات])، ونسّق كل مقياس، ثم أضف مبيعات باريس = CALCULATE([إجمالي المبيعات], المبيعات[المدينة] = "باريس"). ورتّب كل شيء في جدول «_المقاييس».

قائمة الخروج من القسم
  • أكتب مقاييس DAX بـ SUM وAVERAGE وCOUNTROWS.
  • أستخدم DIVIDE بدل «/» وأنسّق كل مقياس.
  • أكتب CALCULATE بسيطًا يعدّل المرشح.
تقييم ذاتي 1-5: هل أبني المقاييس باللبنات دون تردد؟تقييم ذاتي 1-5: هل كتبت ونسّقت قاعدة مقاييس قابلة لإعادة الاستخدام؟

أسئلة شائعة

تشبه DAX صيغ Excel: هل هي اللغة نفسها؟

تتشابه الصياغة (توجد SUM، وAVERAGE، وIF في الاثنين)، لكن المنطق يختلف: يحسب Excel خلايا، ويحسب DAX في سياقات (المرئي، والمرشحات). والمقياس نفسه يعطي نتيجة مختلفة حسب مدينة العمود أو شهر العمود. ومكتسباتك في Excel تساعد في الصياغة؛ أما منطق السياق فيُتعلَّم — وهذه قفزة المستوى 3.

أين أتعلم دوال DAX بعد هذا الدليل؟

المرجع الرسمي المجاني هو dax.guide (من SQLBI): يوثّق كل دالة بصياغتها وأمثلة. وبعد ذلك، تعد SQLBI (ماركو روسو وألبرتو فيراري) المرجع العالمي لـ DAX، ويقترح Microsoft Learn مسارات منظمة تحضّر لشهادة PL-300. ويذكرها قسم الموارد لدينا.

تحقّق من فهمك

ماذا تفعل دالة CALCULATE في DAX؟

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

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