تنفيذ انتقال السياق
ماذا يحدث عندما يتم تقييم قياس أو قياس التعبير ضمن سياق الصف؟ يمكن أن يحدث هذا السيناريو في صيغة عمود محسوب أو عند تقييم تعبير في دالة تكرار.
في المثال التالي، ستنشئ تعريف عمود محسوب في جدول Customer لتصنيف العملاء إلى فئة الولاء. السيناريو بسيط: عندما يكون العائد الذي ينتجه العميل أقل من 2500 دولارٍ أمريكي، يتم تصنيف العميل على أنه منخفض؛ وغير ذلك فإنهم يصنفون على أنهم مرتفعون.
Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
في الصفحة 4 من التقرير، أضف عمود "شريحة العميل" كوسيلة إيضاح للمخطط الدائري.
لاحظ وجود قيمة شريحة عميل واحدة. والسبب هو أن صيغة العمود المحسوبة تنتج نتيجة غير صحيحة: يتم تعيين قيمة مرتفع لكل عميل لأنه لا يتم تقييم التعبير SUM(Sales[Sales Amount])
في سياق عامل تصفية. وبالتالي، يتم تقييم كل عميل على مجموع كل قيمة عمود Sales Amount في جدول Sales.
لفرض تقييم SUM(Sales[Sales Amount])
التعبير لكل عميل، يجب أن يتم انتقال السياق الذي يطبق قيم عمود سياق الصف لسياق التصفية. يمكنك إنجاز هذا الانتقال باستخدام دالة CALCULATE
دون تمرير في تعبيرات التصفية.
تعديل تعريف العمود المحسوب بحيث ينتج النتيجة الصحيحة.
Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
في المخطط الدائري المرئي، أضف العمود المحسوب الجديد إلى "وسيلة الإيضاح"، وتحقق من عرض جزأين دائريين الآن.
في هذه الحالة، الدالة CALCULATE
تطبق قيم سياق الصف مثل عوامل التصفية، والمعروفة باسم انتقال السياق. للدقة، العملية لا تعمل تمامًا بهذه الطريقة عندما يكون عمود فريد في الجدول. عندما يكون عمود فريد في الجدول تحتاج فقط إلى تطبيق عامل تصفية على هذا العمود لجعل الانتقال يحدث. في هذه الحالة، تطبق Power BI عامل تصفية على عمود CustomerKey للقيمة في سياق الصف.
إذا كنت تشير إلى قياسات في تعبير يتم تقييمه في سياق صف، فإن انتقال السياق يكون تلقائيًا. ومن ثمَّ، لا تحتاج إلى تمرير مراجع القياس إلى دالة CALCULATE
.
تعديل تعريف العمود المحسوب الذي يشير إلى قياس الإيرادات، ولاحظ أنه يستمر في إنتاج النتيجة الصحيحة.
Customer Segment =
VAR CustomerRevenue = [Revenue]
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
الآن، يمكنك إكمال صيغة قياس "عمولة المبيعات". لإنتاج الإجمالي، تحتاج إلى استخدام دالة المكرر على كافة المناطق في سياق التصفية. يجب أن تستخدم تعبير دالة مُكرّر دالة CALCULATE
لنقل سياق الصف إلى سياق التصفية. لاحظ أنه لم يعد بحاجة إلى اختبار ما إذا كانت قيمة عمود Country واحد في جدول Sales Territory في سياق التصفية لأنه من المعروف أنه يقوم بالتصفية حسب بلد واحد (لأنه يُكَدّ على المناطق في سياق التصفية وينتمى إقليم إلى بلدٍ واحدٍ فقط).
الانتقال إلى الصفحة 3 من التقرير، ثم بادر بتعديل تعريف قياس Sales Commission لاستخدام دالة المُكرّر SUMX
:
Sales Commission =
SUMX(
VALUES('Sales Territory'[Region]),
CALCULATE(
[Revenue]
* IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
)
يعرض عنصر تحكم الجدول الآن إجمالي عمولة المبيعات لكافة المناطق.