معرفی تابع LOOKUPVALUE در Power BI برای جستجو

عملکرد این تابع مشابه تابع VLOOKUP (یا بهتر بگوییم XLOOKUP) در اکسل است و توسط آن می‌توان مقداری را در یک جدول جستجو کنیم و در صورت وجود داشتن، چیزی که جلو یا پشت آن مقدار وجود دارد را بیابیم. هنگامی از این تابع استفاده می‌کنیم که هیچ Relationship بین جداول نیست و اگر بین جداول Relation داشته باشیم، از تابع RELATED باید استفاده کنیم زیرا بسیار بهینه تر عمل می‌کند.

امضای تابع  LOOKUPVALUE در DAX

LOOKUPVALUE (
    <result_columnName>,
    <search_columnName>,
    <search_value>
    [, <search2_columnName>, <search2_value>]…
    [, <alternateResult>]
)

شرح ساده تابع LOOKUPVALUE

LOOKUPVALUE ( Chi_ro_biar, to_koja_begard, donbal_chi_begard )

مثال

فرض کنید که بین جداول هیچ رابطه‌ای نیست و ‌می‌خواهیم در یک ستون در جدول OrderDetails، نام مشتری که در جدول Orders است را بر اساس OrderID جستجو کنیم.

customer name = LOOKUPVALUE( 
	'Order'[Customer],
	'Order'[Order ID],
	OrderDetail[Order ID]
)

نکات مهم

  • توجه) Data Type های search_columnName با search_value حتما باید یکسان باشند.
  • اگر مقدار جستجو (search_columnName) چند بار تکرار شده باشد و مقدارهای result_columnName با هم فرق داشته باشند، تابع خطا می‌دهد:
    A table of multiple values was supplied where a single value was expected.
  • در این حالت، برای جلوگیری از خطا می‌توان از پارامتر سوم تابع استفاده کرد و نیازی به IFERROR نیست.
  • اگر مقدار جستجو تکراری باشد ولی همه مقدارهای result_columnName یکسان باشند، تابع خطا نمی‌دهد و همان مقدار را برمی‌گرداند.
  • اگر هیچ مقداری پیدا نشود، مقدار BLANK() برگردانده می‌شود (نه خطا) و می‌توان با پارامتر سوم تابع، مقدار دلخواه جایگزین کرد.

کاربردهای LOOKUPVALUE

  1. جستجو بر اساس چند کلید (Composite Key)
    فرض کنید دو جدول دارید که Relationship بین آن‌ها فقط روی یک ستون نیست، بلکه لازم است روی دو یا چند ستون هم‌زمان مطابقت برقرار شود مثلاً می‌خواهیم قیمت کالایی را در سال خاصی جستجو کنیم.
Price =
LOOKUPVALUE(
    ProductPrices[Price], 
    ProductPrices[ProductID], 
    Sales[ProductID],
    ProductPrices[Year], 
    Sales[Year]
)
  1. جستجوی مقدار از جدولی بدون تعریف Relationship در مدل
     
    • مفید برای سناریوهایی که رابطه‌ها circular می‌شوند.
    • کنترل بیشتری در محاسبات شرطی پیچیده می‌دهد.
    • جایگزینی مقدار از جدول نگاشت (Mapping Table)
      در این حالت نیازی نیست که IFهای تو در تو بنویسیم مانند تبدیل عدد فصل به نام فصل.

تابع LOOKUPVALUE چه زمانی خطا می‌دهد؟

زمانی که مقدار جستجو در ستون search_columnName چندین ردیف را پیدا کند و مقدارهای مربوط به result_columnName در آن ردیف‌ها متفاوت باشند، تابع خطا می‌دهد. برای جلوگیری از این خطا می‌توان از پارامتر جایگزین استفاده کرد.

آیا می‌توانم وقتی مقدار پیدا نشد مقدار پیش‌فرض برگردانم؟

بله، می‌توانید با استفاده از پارامتر آخر تابع LOOKUPVALUE مقدار پیش‌فرض را تعریف کنید تا اگر مقداری پیدا نشد، آن مقدار بازگردانده شود به جای مقدار خالی (BLANK()).

🩹 برچسب‌ها

به عنوان اولین نفر، تجربه یا دیدگاه خود را بنویسید!

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

متن ساده

  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
کد امنیتی