تابع IF.EAGER در توابع منطقی (Logical Functions) Power BI
تابع IF.EAGER در Power BI نسخهای از تابع IF در زبان DAX است که از ارزیابی eager استفاده میکند؛ یعنی تمام شاخههای شرطی (چه درست و چه نادرست) را همیشه اجرا میکند، صرفنظر از نتیجه شرط.
تعریف تابع IF.EAGER
DAX
IF.EAGER(<logical_test>, <value_if_true>[, <value_if_false>])
<logical_test>: شرطی که باید بررسی شود (مثلاًSales[Amount] > 1000)<value_if_true>: مقداری که اگر شرط درست باشد، بازگردانده میشود<value_if_false>(اختیاری): مقداری که اگر شرط نادرست باشد، بازگردانده میشود؛ در صورت حذف، خروجیBLANK()خواهد بود
تفاوت با تابع IF معمولی
| ویژگی | IF |
IF.EAGER |
|---|---|---|
| نوع ارزیابی | تنبل (lazy) – فقط شاخه مورد نیاز اجرا میشود | مشتاق (eager) – هر دو شاخه همیشه اجرا میشوند |
| عملکرد | بهینهتر در بسیاری از سناریوها | مفید در شرایط خاص مانند وابستگی متقابل |
| کاربرد | عمومی | زمانی که نیاز به اجرای هر دو شاخه دارید |
مثال ساده
DAX
IF.EAGER(
Sales[Amount] > 1000,
CALCULATE(SUM(Sales[Profit])),
CALCULATE(SUM(Sales[Loss]))
)
در این مثال، هر دو عبارت CALCULATE اجرا میشوند، حتی اگر فقط یکی از آنها در نهایت بازگردانده شود.
کاربردهای رایج
- زمانی که هر دو شاخه دارای اثرات جانبی یا محاسبات وابسته هستند
- در محاسبات تصویری (visual calculations) که نیاز به ارزیابی کامل دارند
- برای سادهسازی کد در شرایطی که استفاده از متغیرها دشوار است
ملاحظات
- استفاده از
IF.EAGERممکن است کارایی را کاهش دهد، چون همه شاخهها اجرا میشوند - اگر فقط یکی از شاخهها نیاز به اجرا دارد، از
IFمعمولی استفاده کنید - این تابع در ستونهای محاسبهشده، جدولهای محاسبهشده، معیارها و محاسبات تصویری قابل استفاده است
- تابع IF.EAGER میتواند در صورتی که value_if_true و value_if_false از انواع داده متفاوتی باشند، یک نوع داده متغیر را برگرداند، اما اگر هر دو value_if_true و value_if_false از نوع داده عددی باشند، تابع تلاش میکند یک نوع داده واحد را برگرداند. در حالت دوم، تابع IF.EAGER به طور ضمنی انواع داده را برای تطبیق با هر دو مقدار تبدیل میکند.
- به عنوان مثال، فرمول IF.EAGER(<condition>, TRUE(), 0) مقدار TRUE یا 0 را برمیگرداند، اما فرمول IF.EAGER(<condition>, 1.0, 0) فقط مقادیر اعشاری را برمیگرداند، حتی اگر value_if_false از نوع داده عدد کامل باشد.
- IF.EAGER رفتار عملکردی مشابهی با تابع IF دارد، اما عملکرد ممکن است به دلیل تفاوت در برنامههای اجرایی متفاوت باشد. تابع IF.EAGER(<logical_test>, <value_if_true>, <value_if_false>) طرح اجرایی مشابه عبارت DAX زیر دارد:
DAX
VAR _value_if_true = <value_if_true>
VAR _value_if_false = <value_if_false>
RETURN
IF (<logical_test>, _value_if_true, _value_if_false)
نکته: دو عبارت شاخهای صرف نظر از عبارت شرط ارزیابی میشوند.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
