فحص سياق التصفية

مكتمل

تسمح دالة ⁧DAX VALUES للصيغ الخاصة بك تحديد القيم في سياق التصفية.

صياغة دالة VALUES هي كما يلي:

VALUES(<TableNameOrColumnName>)

تتطلب دالة التمرير في مرجع جدول أو مرجع عمود. عند تمرير في مرجع جدول، فإنه يقوم بإرجاع كائن جدول بنفس الأعمدة التي تحتوي على صفوف لما هو موجود في سياق التصفية. عند تمرير في مرجع عمود، يقوم بإرجاع جدول عمود واحد من القيم الفريدة الموجودة في سياق التصفية.

ترجع الدالة دائمًا كائن الجدول ومن الممكن أن يحتوي جدول على صفوف متعددة. لذلك، لاختبار ما إذا كانت قيمة معينة في سياق عامل التصفية، يجب أن تختبر صيغتك الخاصة أولاً دالة VALUES ترجع صفاً واحداً. يمكن أن تساعدك دالتين على إنجاز هذه المهمة: ⁧دالات DAX HASONEVALUE وSELECTEDVALUE.

الدالة HASONEVALUE ترجع TRUE عند مرجع عمود محدد إلى قيمةٍ مفردةٍ.

تبسط الدالة SELECTEDVALUE مهمة تحديد ما يمكن أن تكون عليه القيمة الواحدة. عندما يتم تمرير دالة مرجع عمود، فإنه سوف ترجع قيمة واحدة، أو عندما تكون أكثر من قيمة واحدة في سياق التصفية، فإنه سوف ترجع BLANK (أو قيمة بديلة التي تمرر إلى الدالة).

في المثال التالي، ستستخدم دالة HASONEVALUE. إضافة المقياس التالي الذي يحسب عمولة المبيعات إلى الجدول Sales. لاحظ أن في شركة «Adventure Works» معدل العمولة هو 10 في المئة من الإيرادات لجميع البلدان باستثناء الولايات المتحدة. وفي الولايات المتحدة، يحصل مندوبي المبيعات على عمولة بنسبة 15 في المئة. تنسيق القياس كعملة مع منزلتين عشريتين ثم قم بإضافته إلى الجدول الموجود في ⁧⁩الصفحة 3⁧⁩ من التقرير.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

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

لاحظ أن إجمالي نتيجة ⁧⁩"عمولة المبيعات"⁧⁩ هو BLANK. السبب هو أن قيم متعددة في سياق عامل التصفية لعمود Country في الجدول Sales Territory. في هذه الحالة، الدالة HASONEVALUE ترجع FALSE، الذي ينتج في مقياس Revenue مضروبةً في BLANK (قيمة مضروبة في BLANK هي BLANK). لإنتاج مجموع، سوف تحتاج إلى استخدام دالة مُكرّر، والتي يتم شرحها لاحقًا في هذه الوحدة النمطية.

ثلاث وظائف أخرى يمكنك استخدامها لاختبار حالة عامل التصفية هي:

  • ISFILTERED - يُرجع TRUE عند تصفية مرجع عمود تم تمريره مباشرةً.
  • ISCROSSFILTERED - يُرجع TRUE عند تصفية مرجع عمود تم تمريره بطريقة غير مباشرة. تتم التصفية بشكل متقاطع للعمود عندما يؤثر عامل تصفية يتم تطبيقه على عمود آخر في نفس الجدول أو في جدول ذي صلة على العمود المرجعي عن طريق تصفيته.
  • ISINSCOPE - تُرجع TRUE عندما يكون مرجع العمود الذي تم تمريره هو المستوى في التدرج الهرمي للمستويات.

ارجع إلى الصفحة 2 من التقرير، ثم عدِّل تعريف قياس Revenue % Total Country لاختبار أن العمود Region في الجدول Sales Territory في النطاق. إذا لم تكن في النطاق، فإن نتيجة القياس يجب أن تكون BLANK.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

صورة تعرض مرئيات مصفوفة بعنوان "إيرادات البائع" تضم "مجموعة" و"بلد" و"منطقة" مجمعة في الصفوف، وملخصات "الإيرادات" و"إجمالي نسبة الإيرادات في المنطقة" و"إجمالي نسبة الإيرادات في البلد" و"إجمالي نسبة الإيرادات في المجموعة". تظهر القيم فارغة في ملخصات "إجمالي نسبة الإيرادات في البلد".

في المصفوفة لاحظ أن قيم ⁧⁩إجمالي الإيرادات ٪ للبلد⁧⁩ يتم الآن عرضها فقط عندما تكون المنطقة في النطاق.