تنفيذ انتقال السياق

مكتمل

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

في المثال التالي، ستنشئ تعريف عمود محسوب في جدول Customer لتصنيف العملاء إلى فئة الولاء. السيناريو بسيط: عندما يكون العائد الذي ينتجه العميل أقل من 2500 دولارٍ أمريكي، يتم تصنيف العميل على أنه منخفض؛ وغير ذلك فإنهم يصنفون على أنهم مرتفعون.

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

في ⁧⁩الصفحة 4⁧⁩ من التقرير، أضف عمود ⁧⁩"شريحة العميل"⁧⁩ كوسيلة إيضاح للمخطط الدائري.

⁩⁧⁩تُظهر الصورة عنصر تحكم المخطط الدائري بعنوان الإيرادات حسب مقطع العميل. توجد شريحة واحدة فقط: المرتفع، وتمثل 100٪ من البيانات.⁧

لاحظ وجود قيمة ⁧⁩شريحة عميل⁧⁩ واحدة. والسبب هو أن صيغة العمود المحسوبة تنتج نتيجة غير صحيحة: يتم تعيين قيمة ⁧⁩مرتفع⁧⁩ لكل عميل لأنه لا يتم تقييم التعبير ⁧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")

في المخطط الدائري المرئي، أضف العمود المحسوب الجديد إلى "وسيلة الإيضاح"، وتحقق من عرض جزأين دائريين الآن.

⁩⁧⁩صوة تعرض مرئيات مخطط دائري بالعنوان "الإيرادات حسب شريحة العميل". هناك شريحتان: "مرتفع" و"منخفض". يمثل المرتفع 76٪ من البيانات والمنخفض يمثل 24٪.⁧

في هذه الحالة، الدالة 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
        )
    )
)

يعرض عنصر تحكم الجدول الآن إجمالي عمولة المبيعات لكافة المناطق.

صورة تعرض مرئيات جدول مع ثلاثة أعمدة: "المنطقة" و"الإيرادات" و"عمولة المبيعات". يتم عرض عشرة صفوف المنطقة والإجمالي. هناك قيمة الآن في "إجمالي عمولة المبيعات".