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

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

تابع INDEX در DAX

تابع INDEX در DAX

تابع INDEX در Power BI

تابع INDEX در Power BI برای بازیابی یک ردیف خاص از یک جدول یا محور تصویری استفاده می‌شود، بر اساس موقعیت عددی آن در یک مجموعه مرتب‌شده. این تابع فقط در محاسبات تصویری (Visual Calculations) قابل استفاده است.

تعریف تابع INDEX

DAX
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>])
  • position: عددی که موقعیت ردیف را مشخص می‌کند (مثلاً 1 برای اولین ردیف، -1 برای آخرین).
  • سایر پارامترها اختیاری هستند و برای کنترل نحوه مرتب‌سازی، گروه‌بندی، و رفتار در برابر مقادیر خالی استفاده می‌شوند.

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

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

✅ مثال ساده

فرض کنید در یک ماتریس تصویری، ستون Month دارید و می‌خواهید مقدار ماهی را که در موقعیت دوم قرار دارد نمایش دهید:

DAX
INDEX(2, Month)

این تابع مقدار دومین ماه را در محور Month بازمی‌گرداند، بسته به ترتیب مرتب‌سازی و فیلترهای اعمال‌شده.

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

  • بازیابی ردیف خاص از یک مجموعه مرتب‌شده
  • ساخت محاسبات پویا در ویژوال‌ها مانند ماتریس یا جدول
  • تحلیل مقایسه‌ای بین ردیف‌های خاص (مثلاً اول و آخر)

نکات مهم

  • تابع INDEX فقط در Visual Calculations قابل استفاده است.
  • اگر موقعیت خارج از محدوده باشد یا برابر صفر یا BLANK باشد، خروجی خالی خواهد بود.
  • برای مرتب‌سازی دقیق‌تر، می‌توان از پارامترهای orderBy, partitionBy, و matchBy استفاده کرد.
  • این تابع در معیارها یا ستون‌های محاسبه‌شده پشتیبانی نمی‌شود.

تفاوت با توابع مشابه

تابع عملکرد قابل استفاده در
INDEX بازیابی ردیف خاص بر اساس موقعیت فقط Visual Calculations
RANKX رتبه‌بندی ردیف‌ها بر اساس مقدار Measures و Calculated Columns
TOPN بازگرداندن چند ردیف برتر Measures و Calculated Tables

ملاحضات

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

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

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

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

INDEX

یک جدول خالی برگردانده می‌شود اگر:

  • مقدار بیرونی متناظر یک ستون PartitionBy در رابطه وجود نداشته باشد.
  • مقدار موقعیت به موقعیتی اشاره دارد که در داخل پارتیشن وجود ندارد.

اگر INDEX در یک ستون محاسبه‌شده که در همان جدول به عنوان رابطه تعریف شده است استفاده شود و orderBy حذف شود، یک خطا برگردانده می‌شود.

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

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

مثال ۱ – ستون محاسباتی

کوئری DAX زیر:

DAX
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))

جدول زیر را برمی‌گرداند:

DimDate[CalendarYear]
2005
مثال ۲ – ستون محاسباتی

کوئری DAX زیر:

DAX
EVALUATE
SUMMARIZECOLUMNS (
    FactInternetSales[ProductKey],
    DimDate[MonthNumberOfYear],
    FILTER (
            VALUES(FactInternetSales[ProductKey]),
            [ProductKey] < 222
    ),
    "CurrentSales", SUM(FactInternetSales[SalesAmount]),
    "LastMonthSales",
    CALCULATE (
        SUM(FactInternetSales[SalesAmount]),
        INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
    )
)
ORDER BY [ProductKey], [MonthNumberOfYear]

جدول زیر را برمی‌گرداند:

FactInternetSales[ProductKey] DimDate[MonthNumberOfYear] [CurrentSales] [LastMonthSales]
214 1 5423.45 8047.7
214 2 4968.58 8047.7
214 3 5598.4 8047.7
214 4 5073.55 8047.7
214 5 5248.5 8047.7
214 6 7487.86 8047.7
214 7 7382.89 8047.7
214 8 6543.13 8047.7
214 9 6788.06 8047.7
214 10 6858.04 8047.7
214 11 8607.54 8047.7
214 12 8047.7 8047.7
217 1 5353.47 7767.78
217 2 4268.78 7767.78
217 3 5773.35 7767.78
217 4 5738.36 7767.78
217 5 6158.24 7767.78
217 6 6998 7767.78
217 7 5563.41 7767.78
217 8 5913.31 7767.78
217 9 5913.31 7767.78
217 10 6823.05 7767.78
217 11 6683.09 7767.78
217 12 7767.78 7767.78
مثال ۳ – محاسبه بصری

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

DAX
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))

SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))

جدولی را طوری تنظیم کنید که برای هر ماه شامل موارد زیر باشد:
– کل مبلغ فروش؛
– اختلاف با ماه اول سال مربوطه؛
– و اختلاف با ماه اول فصل مربوطه.

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

تابع INDEX در DAX

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

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

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

 

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

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

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