محتويات الدورة

Power BI / متوسط: السياق والجودة والوصول / الدرس 7

CALCULATE وتعديل سياق التصفية

توقع تغير المقياس عندما يستبدل الحساب مرشحا موثقا أو يتقاطع معه أو يزيله.

وقت القراءة التقريبي: 5 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح CALCULATE كتقييم داخل سياق تصفية معدل.
  • تمييز الاستبدال عن التقاطع باستخدام KEEPFILTERS.
  • تحديد أبعاد المقام التي تبقى والتي تزال.

سم السياق الابتدائي

ليس للمقياس قيمة دائمة مستقلة عن التقرير. ابدأ بالمرشحات الموجودة أصلا، ثم اشرح ما تغيره CALCULATE قبل تقييم تعبيرها. يفترض المسار علاقة DimProduct إلى FactSales الفعالة وبيانات المثال التي يبلغ إجماليها 70. يقيد صف عرض خاص بالمنتج B الإيراد مبدئيا إلى 20. من دون تحديد حالة البداية هذه، يبقى وصف مبيعات A ناقصا؛ فلا يبين هل تحل A محل اختيار المنتج القائم أم تضيقه. اكتب حالة ما قبل التعديل والتعديل نفسه وصفوف الوقائع المتوقع شمولها كثلاثة أجزاء منفصلة في مراجعة الحساب.

قارن الاستبدال والتقاطع

يستبدل مرشح CALCULATE البسيط على عمود عادة مرشحا موجودا على العمود نفسه. وتغير KEEPFILTERS طريقة الجمع لتصبح تقاطعا. في المقطع الأول، قد يعرض صف B قيمة 50 للمقياس A Revenue، لأن مرشح ProductKey يصبح A؛ بينما لا يجد A Within Selection منتجا مطابقا بعد التقاطع. تظل مرشحات الأعمدة الأخرى ذات صلة ما لم تعدل صراحة. هذه تعريفات جزئية لنموذج وتوقعاتها مستنتجة، وليست DAX منفذة. اختبر اختيارا متعارضا وآخر مطابقا؛ فالإجمالي الافتراضي دون تصفية لا يكشف الفرق بين العقدين.

dax مقياسان للاستبدال والتقاطع
A Revenue = CALCULATE([Revenue], DimProduct[ProductKey] = "A")
A Within Selection = CALCULATE([Revenue], KEEPFILTERS(DimProduct[ProductKey] = "A"))

افترض Revenue السابق المبني على SUMX وأن ProductKey عمود تصفية العرض. تحت B تكون النتيجتان المقصودتان50 وBLANK. لم يعمل محرك DAX.

حدد مقام الحصة

يحتاج مقياس الحصة مقاما محددا بدقة. قد تحسب إزالة مرشحات DimProduct حصة كل المنتجات مع إبقاء اختيار التاريخ الحالي. أما إزالة كل مرشحات النموذج فتجيب عن سؤال أوسع قد يفاجئ المستخدم. صف الأبعاد التي تبقى قبل اختيار وسائط REMOVEFILTERS. معدلات مرشحات الحساب ليست وسيلة لتجاوز أمان الصفوف. لا يصبح عرض 50/70 ذا معنى إلا ضمن المجتمع وسياق الأمان المعلنين. تحتاج متطلبات أخرى، كالحصة ضمن الفئات التي اختارها المستخدم، عقدا صريحا مختلفا، لا استبدالا غير مفسر بدوال من عائلة ALL.

استخدم مرجعا بالمجموعات

يمثل المثال الثاني قراري مجموعتي المنتجات فقط. يترك استبدال {B} بـ{A} المنتج A، بينما لا يترك تقاطعهما أي منتج. يطبع المثال المجموعات كقوائم مرتبة عمدا، ولا يدعي محاكاة BLANK في DAX أو تقييم العلاقات. يسهل فصل منطق الاختيار عن الحساب تفسير نتيجة غير متوقعة. بعد فهم مجموعة المنتجات، طبق مبالغ السطور المعروفة وقارن النتيجة المقصودة. افحص أيضا مرشحات سمات المنتج الأخرى؛ فاستبدال عمود واحد لا يعني مسح كل مرشح محتمل على جدول البعد.

python قرارات مجموعات منتجات افتراضية
existing = {"B"}
requested = {"A"}
print(sorted(requested))
print(sorted(existing & requested))
الناتج المتوقع
['A']
[]

تمثل القائمتان الاستبدال والتقاطع فقط. لا تعني القائمة الفارغة أنها قيمة BLANK في DAX.

راجع التعديل داخل سياقه

استخدم حالات بلا اختيار وA وB وعدة منتجات ومرشح تاريخ يجب أن يبقى. اشرح الإجماليات بالقواعد نفسها بدلا من إجبارها على مشابهة جمع الصفوف الظاهرة. لوسائط المرشحات المنطقية قيود لغوية؛ لذلك راجع مرجع الدالة قبل وضع شرط معقد يعبر جداول في وسيط واحد. ينفذ المسار نموذج المجموعات فقط. تبقى قراءة DAX وسلوك الفراغ وانتقال التصفية غير مختبرة. يسمي التسليم الواضح السياق الابتدائي والأعمدة المعدلة والمرشحات الباقية والصفوف المتوقعة في كل حالة مهمة، ليبقى المعنى قابلا للمراجعة قبل أن يخفيه التصميم.

الأخطاء الشائعة وإصلاحها

تجاهل مقياس منتج ثابت اختيار المنتج على نحو غير متوقع

لماذا يحدث؟
اختلط استبدال مرشح العمود بالتقاطع معه.
كيف تصلحه؟
اختر الاستبدال أو KEEPFILTERS حسب عقد المقياس.
كيف تتجنب تكراره؟
أدرج حالة منتج متعارض في المراجعة.

فقد مقام الحصة نطاق التاريخ

لماذا يحدث؟
استُخدمت إزالة أوسع مما يطلب السؤال.
كيف تصلحه؟
أزل أبعاد المرشحات المقصودة فقط واحفظ السياق الموثق.
كيف تتجنب تكراره؟
اكتب نطاق المقام قبل اختيار المعدل.

اعتبار تقاطع فارغ نموذجا معطلا

لماذا يحدث؟
لم يفهم تعارض الاختيارات.
كيف تصلحه؟
تتبع المفاتيح المشمولة قبل تغيير العلاقات أو الفراغ.
كيف تتجنب تكراره؟
افصل منطق المجموعات عن حساب المبالغ في التوقعات.

اختبر فهمك

1. لماذا قد تعرض A Revenue قيمة50 وتبقى A Within Selection فارغة تحت مرشح B؟

اعرض الحل المشروح

تستبدل الأولى مرشح العمود ProductKey نفسه بقيمة A. أما الثانية فتتقاطع مع B الموجودة، فلا تجد منتجا يحقق القيمتين معا. تبقى المرشحات الأخرى ذات الصلة مؤثرة. هذا فرق مقصود في دلالة الحساب، وليس دليلا تلقائيا على عطل. حدد السؤال الذي يجب أن يجيب عنه المقياس قبل وصف نتيجة بالخطأ أو استبدال الفراغ بصفر، ثم تحقق من الصفوف الداخلة في كل حالة.

2. تقارن الحصة المنتجات داخل الشهر المختار. ماذا يبقي المقام؟

اعرض الحل المشروح

يجب أن يبقى سياق التاريخ أو الشهر المختار، مع إزالة نطاق المنتج الذي يعرفه سؤال العمل فقط. وثق هل يشمل المقام كل المنتجات أم مجتمع فئات مختارة. تحقق من مساهمة A البالغة 50 ومن إجمالي المجتمع الموافق بحالة صغيرة فيها تاريخان ومنتجان على الأقل. يمنع ذلك إعطاء حصة من جميع الأزمنة بينما يعتقد القارئ أنها حصة داخل الشهر.

أهم ما تعلمته

  • تغير CALCULATE سياق التصفية ويجيب الاستبدال والتقاطع عن سؤالين مختلفين.
  • يحتاج المقام أبعادا باقية ومزالة صريحة.

المراجع الرسمية