فروش لایسنس Power BI

با ما داده های خود را درک کنید تا برای آینده کسب و کارتان بهتر تصمیم گیری کنید.

تابع ROWNUMBER در DAX

تابع ROWNUMBER در DAX

تابع ROWNUMBER در Power BI

تابع ROWNUMBER در Power BI یکی از توابع جدید زبان DAX است که فقط در محاسبات تصویری (Visual Calculations) قابل استفاده است. این تابع برای شماره‌گذاری ردیف‌ها در یک محور تصویری استفاده می‌شود و عملکردی مشابه تابع ROW_NUMBER() در SQL دارد.

تعریف تابع ROWNUMBER

DAX
ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

پارامترها:

  • axis یا relation (اختیاری): محور تصویری یا جدول مرجع که ردیف‌ها از آن گرفته می‌شوند.
  • orderBy (اختیاری): نحوه مرتب‌سازی ردیف‌ها (مثلاً بر اساس تاریخ یا مقدار فروش).
  • partitionBy (اختیاری): گروه‌بندی داده‌ها برای شروع شمارش از ۱ در هر گروه.
  • matchBy (اختیاری): تعیین ردیف فعلی برای مقایسه.
  • reset (اختیاری): بازنشانی شمارش در شرایط خاص.

عملکرد چگونه است؟

تابع ROWNUMBER به هر ردیف در محور تصویری یک عدد اختصاص می‌دهد که موقعیت آن را در ترتیب مشخص‌شده نشان می‌دهد. اگر از PARTITIONBY استفاده شود، شماره‌گذاری در هر گروه از نو شروع می‌شود.

✅ مثال 1: شماره‌گذاری ردیف‌ها بر اساس تاریخ
DAX
ROWNUMBER(
    ORDERBY(Sales[Date])
)

در این مثال، ردیف‌ها بر اساس تاریخ به‌صورت صعودی شماره‌گذاری می‌شوند.

✅ مثال 2: ستون محاسبه شده

کوئری DAX زیر:

DAX
EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "UniqueRank",
    ROWNUMBER(
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

جدولی را برمی‌گرداند که به طور منحصر به فرد هر منطقه جغرافیایی را با نام انگلیسی CountryRegionName یکسان، بر اساس StateProvinceName و City آنها رتبه‌بندی می‌کند.

✅ مثال 3: محاسبه بصری

کوئری‌های DAX محاسبه بصری زیر:

DAX
SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

دو ستون ایجاد کنید که هر ماه را به طور منحصر به فرد بر اساس کل فروش، چه در هر سال و چه در کل تاریخچه، رتبه‌بندی کنند.

تصویر زیر ماتریس بصری و اولین عبارت محاسبه بصری را نشان می‌دهد.

تابع ROWNUMBER در DAX

✅ مثال پیشرفته: شماره‌گذاری در هر منطقه
DAX
ROWNUMBER(
    ORDERBY(Sales[Amount], DESC),
    PARTITIONBY(Sales[Region])
)

در این مثال، ردیف‌ها در هر منطقه به‌صورت جداگانه و بر اساس فروش نزولی شماره‌گذاری می‌شوند.

کاربردهای رایج

  • نمایش شماره ردیف در جدول یا ماتریس تصویری
  • ساخت رتبه‌بندی ساده بدون نیاز به RANK
  • تحلیل موقعیت نسبی ردیف‌ها در گروه‌های مختلف
  • ساخت KPIهای تصویری با موقعیت ردیف

⚠️ نکات مهم

  • فقط در Visual Calculations قابل استفاده است.
  • اگر ترتیب مشخص نشود، Power BI از ترتیب پیش‌فرض استفاده می‌کند.
  • استفاده از ORDERBY و PARTITIONBY برای کنترل دقیق‌تر توصیه می‌شود.
  • این تابع در معیارها (Measures) یا ستون‌های محاسبه‌شده پشتیبانی نمی‌شود.

ملاحضات

هر ستون orderBy، partitionBy و matchBy باید یک مقدار بیرونی متناظر داشته باشد تا به تعریف ردیف فعلی که قرار است روی آن عمل کند، با رفتار زیر کمک کند:

  • اگر دقیقاً یک ستون بیرونی متناظر وجود داشته باشد، از مقدار آن استفاده می‌شود.
  • اگر هیچ ستون بیرونی متناظری وجود نداشته باشد، آنگاه:
    • ROWNUMBER ابتدا تمام ستون‌های orderBy، partitionBy و matchBy را که هیچ ستون بیرونی متناظری ندارند، تعیین می‌کند.
    • برای هر ترکیبی از مقادیر موجود برای این ستون‌ها در زمینه والد ROWNUMBER، ROWNUMBER ارزیابی شده و یک ردیف بازگردانده می‌شود.
    • خروجی نهایی ROWNUMBER ترکیبی از این ردیف‌ها است.
  • اگر بیش از یک ستون بیرونی متناظر وجود داشته باشد، یک خطا بازگردانده می‌شود.

اگر matchBy وجود داشته باشد، ROWNUMBER سعی می‌کند از ستون‌های matchBy و partitionBy برای شناسایی ردیف فعلی استفاده کند. اگر ستون‌های مشخص شده در orderBy و partitionBy نتوانند به طور منحصر به فرد هر ردیف مرتبط را شناسایی کنند، آنگاه:

  • تابع ROWNUMBER سعی می‌کند کمترین تعداد ستون‌های اضافی مورد نیاز برای شناسایی منحصر به فرد هر سطر را پیدا کند.
  • اگر چنین ستون‌هایی یافت شوند، تابع ROWNUMBER
    • سعی می‌کند کمترین تعداد ستون‌های اضافی مورد نیاز برای شناسایی منحصر به فرد هر سطر را پیدا کند.
    • این ستون‌های جدید را به طور خودکار به عبارت orderBy اضافه می‌کند.
    • هر پارتیشن را با استفاده از این مجموعه جدید از ستون‌های orderBy مرتب می‌کند.
  • اگر چنین ستون‌هایی یافت نشوند و تابع در زمان اجرا یک تساوی را تشخیص دهد، یک خطا برمی‌گرداند.

reset فقط در محاسبات بصری قابل استفاده است و نمی‌توان آن را در ترکیب با orderBy یا partitionBy استفاده کرد. اگر reset وجود داشته باشد، می‌توان axis را مشخص کرد اما relation را نمی‌توان.

اگر مقدار reset مطلق باشد (یعنی یک عدد صحیح مثبت، HIGHESTPARENT یا یک مرجع فیلد) و محاسبه در سطح هدف یا بالاتر از آن در سلسله مراتب ارزیابی شود، محاسبه برای هر عنصر جداگانه بازنشانی می‌شود. یعنی تابع در یک پارتیشن که فقط شامل آن عنصر خاص است، ارزیابی می‌شود.

 

برای خرید لایسنس نرم افزار Power BI ، می‌توانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.

فرم درخواست لایسنس Power BI

میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download

 

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا