فحص سياق التصفية
تسمح دالة 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
)
)
في المصفوفة لاحظ أن قيم إجمالي الإيرادات ٪ للبلد يتم الآن عرضها فقط عندما تكون المنطقة في النطاق.