استخدام وظائف معدّل التصفية
عند استخدام دالة CALCULATE
، يمكنك تمرير في وظائف تعديل التصفية، والتي تسمح لك بإنجاز أكثر من إضافة عوامل التصفية وحدها.
إزالة عوامل التصفية
استخدم دالة DAX REMOVEFILTERS
كتعبير عامل تصفية CALCULATE
لإزالة عوامل التصفية من سياق التصفية. يمكن أن تزيل عوامل التصفية من عمود واحد أو أكثر أو من كافة الأعمدة في جدول واحد.
ملاحظة
دالة REMOVEFILTERS
جديدة نسبيًا. في الإصدارات السابقة من DAX، قمت بإزالة عوامل التصفية باستخدام دالة أو متغيرات DAX ALL
، بما في ذلك ALLEXCEPT
ودالات DAX ALLNOBLANKROW
. هذه الدالات تعمل مثل كل من معدلات التصفية والدالات التي تقوم بإرجاع جداول إلى قيم مميزة. يتم ذكر هذه الوظائف الآن لأنك من المحتمل أن تجد أمثلة على الوثائق والصيغ التي تزيل عوامل التصفية باستخدامها.
في المثال التالي، سيتم إضافة مقياس جديد إلى جدول Sales الذي يقيم مقياس Revenue ولكن يقوم بذلك عن طريق إزالة عوامل التصفية من الجدول Sales Territory. قم بتنسيق القياس كعملة مع منزلتين عشريتين.
Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))
الآن، إضافة مقياس "إجمالي إيرادات المنطقة" إلى عنصر تحكم المصفوفة التي تم العثور عليها في الصفحة 2 من التقرير. سيتم تجميع عنصر تحكم المصفوفة حسب ثلاثة أعمدة من جدول "منطقة المبيعات" على الصفوف: المجموعة و البلدوالمنطقة.
لاحظ أن كل قيمة "إجمالي الإيرادات للمنطقة" هي نفسها. إنها قيمة إجمالي الإيرادات.
في حين أن هذه النتيجة من تلقاء نفسها ليست مفيدة، عندما يتم استخدامها كمقام في نسبة، فإنه يحسب في المئة من المجموع الكلي. لذلك، ستقوم الآن بتجاوز تعريف قياس إجمالي إيرادات المنطقة بالتعريف التالي. (يغير هذا التعريف الجديد اسم القياس ويعلن عن متغيرين. تأكد من تنسيق القياس كنسبة مئوية مع رقمين عشريتين.)
Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory')
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalRegionRevenue
)
تحقق من أن عنصر تحكم المصفوفة يعرض الآن قيم "إجمالي الإيرادات ٪ للمنطقة".
ستقوم الآن بإنشاء مقياس آخر، ولكن هذه المرة، سوف تحسب نسبة الإيرادات لمنطقة مقسومة على إيرادات بلدها.
قبل إكمال هذه المهمة، لاحظ أن قيمة "إجمالي الإيرادات ٪ للمنطقة" للمنطقة الجنوبية الغربية هي 22.95 بالمئة. تحقق في سياق التصفية لهذه الخلية. بادر بالتبديل إلى طريقة عرض البيانات وبعد ذلك، ثم في جزء Fields حدد جدول Sales Territory.
تطبيق عوامل تصفية العمود التالية:
- مجموعة - أمريكا الشمالية
- البلد - الولايات المتحدة
- المنطقة - جنوب غرب
لاحظ أن عوامل التصفية تقليل الجدول إلى صف واحد فقط. الآن، في أثناء التفكير في الهدف الجديد الخاص بك لإنشاء نسبة من إيرادات المنطقة على إيرادات البلد، قم بمسح عامل التصفية من عمود المنطقة.
لاحظ وجود خمسة صفوف الآن، كل صف ينتمي إلى الولايات المتحدة. وبناءً على ذلك، عند مسح عوامل تصفية العمود "المنطقة"، مع الاحتفاظ بعوام التصفية في أعمدة البلد والمجموعة، سيكون لديك سياق تصفية جديد خاص ببلد المنطقة.
في تعريف القياس التالي، لاحظ كيف يمكنك مسح أو إزالة عامل تصفية من عمود. في منطق DAX، هو تغيير صغير وخفي يتم إجراؤه على صيغة قياس إجمالي الإيرادات ٪ : تزيل الدالة REMOVEFILTERS
عوامل التصفية من عمود Region بدلاً من جميع الأعمدة في جدول Sales Territory.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
أضف مقياس Revenue % Total Country إلى الجدول Sales ثم نسقه كنسبة مئوية مع مكانيين عشريين. إضافة مقياس جديد إلى المصفوفة المرئية.
لاحظ أن كافة القيم، باستثناء تلك القيم لمناطق الولايات المتحدة، هي 100 بالمئة. والسبب هو شركة " Adventure Works"، فإن الولايات المتحدة لديها مناطق، في حين أن جميع البلدان الأخرى لا تفعل ذلك.
ملاحظة
لا تدعم النماذج الجدولية التسلسلات الهرمية المعقدة، وهي التسلسلات الهرمية ذات الدواخل المتغيرة. لذلك، فإنه أسلوب تصميم شائع لتكرار القيم الأصل (أو السلف الأخرى) في المستويات الدنيا من التسلسل الهرمي. على سبيل المثال، لا تملك أستراليا منطقة، لذلك يتم تكرار قيمة البلد كاسم المنطقة. من الأفضل دائمًا تخزين قيمة ذات معنى بدلاً من BLANK.
المثال التالي هو آخر إجراء ستقوم بإنشائه. أضف مقياس إجمالي الإيرادات % للمجموعة ثم قم بتنسيقه كنسبة مئوية مع منزلتين عشريتين. ثم إضافة مقياس جديد إلى المصفوفة المرئية.
Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS(
'Sales Territory'[Region],
'Sales Territory'[Country]
)
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalGroupRevenue
)
عند إزالة عوامل التصفية من عمودي Region و Country في الجدول Sales Territory، سيحسب المقياس إيراد المنطقة كنسبة من إيرادات المجموعة.
الحفاظ على عوامل التصفية
يمكنك استخدام دالة DAX KEEPFILTERS
كتعبير عامل تصفية في الدالة CALCULATE
للاحتفاظ بعوامل التصفية.
لمشاهدة كيفية إنجاز هذه المهمة، قم بالتبديل إلى الصفحة 1 من التقرير. ثم تعديل تعريف قياس Revenue Red لاستخدام الدالة KEEPFILTERS
.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
في عنصر تحكم بالجدول، لاحظ وجود قيمة واحدة فقط »الإيراد الأحمر». السبب هو لأن تعبير عامل التصفية المنطقية يحتفظ عوامل التصفية الموجودة على عمود Color في جدول Product. السبب في الألوان الأخرى غير الأحمر هي BLANK لأن سياقات عامل التصفية وتعبيرات التصفية يتم دمجها من أجل عاملي التصفية هذين. يتم تقاطع اللون الأسود والأحمر ولأن ما غير ذلك لا يمكن أن يكون TRUE
في نفس الوقت، يتم تصفية التعبير بواسطة صفوف المنتج. من الممكن فقط أن يكون كلا المرشحين الأحمرين TRUE
في نفس الوقت، وهو ما يفسر سبب إظهار قيمة Revenue Red واحدة.
استخدام العلاقات غير النشطة
يمكن أن تقوم علاقة النموذج غير نشطة فقط بنشر عوامل التصفية عند تمرير دالة DAX USERELATIONSHIP
كتعبير عامل تصفية لدالة CALCULATE
. عند استخدام هذه الوظيفة لإجراء علاقة غير نشطة، ستصبح العلاقة النشطة غير نشطة تلقائياً.
راجع مثالاً لتعريف القياس الذي يستخدم علاقة غير نشطة لحساب قياس الإيرادات حسب التواريخ المشحونة:
Revenue Shipped =
CALCULATE (
[Revenue],
USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)
تعديل سلوك العلاقة
يمكنك تعديل سلوك علاقة النموذج عند تقييم تعبير بتمرير دالة DAX CROSSFILTER
كتعبير عامل تصفية إلى دالة CALCULATE
. إنها إمكانية متقدمة
يمكن للدالة CROSSFILTER
تعديل اتجاهات التصفية (من كل إلى واحد أو من واحد إلى كليهما) وحتى تعطيل علاقة.