حساب الرتب

مكتمل

الدالة RANKX DAX هي دالة مكرر خاصة يمكنك استخدامها لحساب الرتب. وتكون صيغتها كما يلي:

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

ككل دالات المكرر، يجب تقديم جدول وتعبير. اختياريًا، يمكنك تقديم قيمة رتبة أو ضبط اتجاه الأمر أو تحديد كيفية التعامل مع الرتب عند تعادل القيم.

اتجاه الأمر

اتجاه الأمر إما تصاعدي أو تنازلي. عند ترتيب شيء إيجابي، مثل قيم الدخل، من المحتمل استخدام ترتيب تنازلي بحيث يتم ترتيب أعلى قيمة للدخل في المرتبة الأولى. عند ترتيب شيء غير إيجابي، مثل شكاوى العملاء، قد تستخدم ترتيب تصاعدي بحيث يتم ترتيب أقل عدد من الشكاوى في المرتبة الأولى. عند عدم تقديم وسيطة أمر، فإن الدالة ستستخدم 0 (صفر) (للترتيب التنازلي).

التعامل مع التعادلات

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

إنشاء مقاييس الترتيب

أضِف المقياس التالي إلى جدول المنتج:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity]
)

أضِف مقياس تصنيف كمية المنتجات إلى مرئيات الجدول الموجودة في الصفحة 2 من التقرير. تجمع مرئيات الجدول منتجات الدراجات وتعرض الكمية، مما يعمل على ترتيب المنتجات حسب الكمية تنازليًا.

تتكرر الدالة RANKX في جدول يتم إرجاعه بواسطة الدالة ALL DAX. يتم استخدام الدالة ALL لإرجاع كل الصفوف في جدول نموذج أو قيم في عمود واحد أو أكثر، و تتجاهل كل عوامل التصفية. لذلك، في هذه الحالة، ترجع الدالة جدولاً يتكون من كل قيم عمود المنتج في جدول المنتج. يجب أن تستخدم الدالة RANKX دالة ALL لأن مرئيات الجدول ستستخدم التجميع حسب المنتج (الذي يمثل عامل تصفية على جدول المنتج).

في مرئيات الجدول، لاحظ وجود منتجين متعادلين في الموضع العاشر وأن ترتيب المنتج التالي هو 12. هذه المرئيات مثال عن استخدام وسيطة التعادلات تخطي.

تُظهر الصورة جدولاً مرئيًا بعنوان «Bike Sales». يحتوي على ثلاثة أعمدة: Product وQuantity وProduct Quantity Rank. يتم ترتيب صفوف الجدول حسب الكمية تنازليًا. يتشارك منتجان في المرتبة 10، ويأتي المنتج التالي في المرتبة 12.

مهمتك التالية هي إدخال المنطق التالي لتعديل تعريف قياس ترتيب كمية المنتج لاستخدام الترتيب الكثيف:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity],
    ,
    ,
    DENSE
)

في مرئيات الجدول، لاحظ أن ترتيب التخطي لم يعد موجودًا. بعد المنتجين اللذين تعادلا في المركز العاشر، الترتيب التالي هو 11.

تُظهر الصورة جدولاً مرئيًا بعنوان «Bike Sales». يحتوي على ثلاثة أعمدة: Product وQuantity وProduct Quantity Rank. يتم ترتيب صفوف الجدول حسب الكمية تنازليًا. يتشارك منتجان في المرتبة 10، والمنتج التالي في المرتبة 11.

لاحظ أن إجمالي مرئيات الجدول لتصنيف كمية المنتج هو واحد (1). والسبب هو أنه تم ترتيب إجمالي جميع المنتجات.

صورة توضح أن إجمالي ترتيب كمية المنتجات هو 1.

ليس من المناسب ترتيب إجمالي المنتجات، لذلك سوف تستخدم الآن المنطق التالي لتعديل تعريف القياس لإرجاع BLANK، ما لم تتم تصفية منتج واحد:

Product Quantity Rank =
IF(
    HASONEVALUE('Product'[Product]),
    RANKX(
        ALL('Product'[Product]),
        [Quantity],
        ,
        ,
        DENSE
    )
)

صورة توضح أن إجمالي ترتيب كمية المنتجات هو BLANK.

لاحظ أن ترتيب إجمالي كمية المنتج الآن هو BLANK، والذي تم تحقيقه باستخدام الدالة HASONEVALUE DAX لاختبار ما إذا كان العمود Product في جدول Product له قيمة واحدة في سياق التصفية. هذا هو الحال لكل مجموعة من المنتجات، ولكن ليس للإجمالي الذي يمثل جميع المنتجات.

سيتم تقديم سياق التصفية والدالة HASONEVALUE في وحدة سياق التصفية.