تابع RANK در Power BI
تابع RANK در Power BI یک تابع جدید در زبان DAX است که برای رتبهبندی ردیفها در یک محور تصویری استفاده میشود. این تابع فقط در محاسبات تصویری (Visual Calculations) قابل استفاده است و جایگزین سادهتر و قدرتمندتری برای RANKX محسوب میشود.
تعریف تابع RANK
RANK(
[<ties>],
[<axis> or <relation>],
[<orderBy>],
[<blanks>],
[<partitionBy>],
[<matchBy>],
[<reset>]
)
پارامترها:
- ties (اختیاری): نحوه برخورد با مقادیر مساوی. مقدارهای مجاز:
SKIP: رتبهها را با پرش نمایش میدهد (پیشفرض)DENSE: رتبهها را بدون پرش نمایش میدهد
- axis یا relation: محور تصویری یا جدول مرجع
- orderBy: نحوه مرتبسازی دادهها (مثلاً بر اساس فروش یا تاریخ)
- partitionBy (اختیاری): گروهبندی دادهها (مثلاً بر اساس منطقه یا محصول)
- matchBy (اختیاری): تعیین ردیف فعلی برای مقایسه
- reset (اختیاری): نقطهای برای بازنشانی محاسبه
عملکرد چگونه است؟
تابع RANK رتبه هر ردیف را در محور تصویری بر اساس ترتیب مشخصشده محاسبه میکند. این تابع بهصورت داخلی از توابع پنجرهای استفاده میکند و برای رتبهبندی درون گروهها یا کل مجموعه داده بسیار مناسب است.
✅ مثال 1: رتبه فروش در کل مجموعه
RANK(
ORDERBY(Sales[Amount], DESC)
)
در این مثال، ردیفها بر اساس مقدار فروش بهصورت نزولی رتبهبندی میشوند.
✅ مثال 2: ستون محاسبهشده
پرس و جوی DAX زیر:
EVALUATE
ADDCOLUMNS(
'DimGeography',
"Rank",
RANK(
DENSE,
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
LAST,
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
جدولی را برمیگرداند که هر منطقه جغرافیایی را با نام انگلیسی یکسان (EnglishCountryRegionName) بر اساس نام ایالت، استان و شهر آنها رتبهبندی میکند. مقادیر ستونهای خالی orderBy در انتها مرتب میشوند.
✅ مثال 3: محاسبه بصری
پرسشهای محاسبه بصری DAX زیر:
SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))
دو ستون ایجاد کنید که هر ماه را بر اساس کل فروش، چه در هر سال و چه در کل تاریخچه، رتبهبندی کنند.
تصویر زیر ماتریس بصری و اولین عبارت محاسبه بصری را نشان میدهد:
✅ مثال پیشرفته: رتبه فروش در هر منطقه
RANK(
DENSE,
ORDERBY(Sales[Amount], DESC),
PARTITIONBY(Sales[Region])
)
در این مثال، رتبه فروش برای هر منطقه بهصورت جداگانه و بدون پرش محاسبه میشود.
کاربردهای رایج
- رتبهبندی فروش، سود، یا هر معیار عددی دیگر
- رتبهبندی درون گروهها (مثلاً منطقه، محصول، دستهبندی)
- ساخت KPIهای تصویری با رتبههای پویا
- تحلیل رقابتی یا مقایسهای در ماتریسها و جدولهای تصویری
⚠️ نکات مهم
- تابع
RANKفقط در Visual Calculations قابل استفاده است. - برای عملکرد دقیق، استفاده از
ORDERBYوPARTITIONBYتوصیه میشود. - اگر مقادیر مساوی وجود داشته باشند، رفتار تابع با
tiesکنترل میشود. - این تابع جایگزین سادهتر و خواناتر برای
RANKXدر سناریوهای تصویری است.
ملاحضات
- هر ستون orderBy، partitionBy و matchBy باید یک مقدار بیرونی متناظر داشته باشد تا به تعریف ردیف فعلی که روی آن عمل میکند، با رفتار زیر کمک کند:
- اگر دقیقاً یک ستون بیرونی متناظر وجود داشته باشد، از مقدار آن استفاده میشود.
- اگر هیچ ستون بیرونی متناظری وجود نداشته باشد، آنگاه:
- RANK ابتدا تمام ستونهای orderBy، partitionBy و matchBy را که هیچ ستون بیرونی متناظری ندارند، تعیین میکند.
- برای هر ترکیبی از مقادیر موجود برای این ستونها در زمینه والد RANK، RANK ارزیابی میشود و یک ردیف بازگردانده میشود.
- خروجی نهایی RANK یک عدد رتبه است.
- اگر matchBy وجود داشته باشد، RANK سعی میکند از ستونهای matchBy و partitionBy برای شناسایی ردیف فعلی استفاده کند.
- اگر ستونهای مشخص شده در orderBy و partitionBy نتوانند هر ردیف مرتبط را به طور منحصر به فرد شناسایی کنند، ممکن است دو یا چند ردیف رتبهبندی یکسانی داشته باشند و رتبهبندی توسط پارامتر ties تعیین میشود.
- RANK برای مجموع ردیفها مقدار خالی برمیگرداند. توصیه میشود عبارت خود را به طور کامل آزمایش کنید.
- RANK با RANKX قابل مقایسه نیست، همانطور که SUM با SUMX قابل مقایسه است.
- reset فقط در محاسبات بصری قابل استفاده است و نمیتوان آن را در ترکیب با orderBy یا partitionBy استفاده کرد. اگر reset وجود داشته باشد، میتوان axis را مشخص کرد اما relation را نمیتوان.
- اگر مقدار reset مطلق باشد (یعنی یک عدد صحیح مثبت، HIGHESTPARENT یا یک مرجع فیلد) و محاسبه در سطح هدف یا بالاتر از سطح هدف در سلسله مراتب ارزیابی شود، محاسبه برای هر عنصر جداگانه بازنشانی میشود. یعنی، تابع در یک پارتیشن که فقط شامل آن عنصر خاص است ارزیابی میشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download

