تابع SWITCH در توابع منطقی (Logical Functions) Power BI
تابع SWITCH در Power BI یکی از توابع منطقی در زبان DAX است که برای جایگزینی چند شرط IF با ساختاری سادهتر و خواناتر استفاده میشود. این تابع زمانی کاربرد دارد که بخواهید بر اساس مقدار یک عبارت، خروجیهای مختلفی تولید کنید.
تعریف تابع SWITCH
SWITCH(<expression>, <value1>, <result1>, <value2>, <result2>, ..., <else>)
<expression>: عبارتی که مقدار آن بررسی میشود (مثلاً یک ستون یا محاسبه).<valueX>: مقادیری که با عبارت مقایسه میشوند.<resultX>: خروجی متناظر با هر مقدار.<else>(اختیاری): خروجی پیشفرض اگر هیچکدام از مقادیر مطابقت نداشتند.
مثال 1
فرض کنید ستونی به نام Sales[Region] دارید و میخواهید بر اساس منطقه، یک دستهبندی متنی نمایش دهید:
RegionGroup :=
SWITCH(
Sales[Region],
"North", "منطقه شمالی",
"South", "منطقه جنوبی",
"East", "منطقه شرقی",
"West", "منطقه غربی",
"نامشخص"
)
اگر مقدار Sales[Region] برابر با "North" باشد، خروجی "منطقه شمالی" خواهد بود. اگر هیچکدام از مقادیر مطابقت نداشتند، خروجی "نامشخص" خواهد بود.
مثال 2
یکی از کاربردهای رایج SWITCH مقایسهی عبارات با مقادیر ثابت است. مثال زیر یک ستون محاسباتی از نام ماهها ایجاد میکند:
= SWITCH (
[Month Number Of Year],
1, "January",
2, "February",
3, "March",
4, "April",
5, "May",
6, "June",
7, "July",
8, "August",
9, "September",
10, "October",
11, "November",
12, "December",
"Unknown month number"
)
یکی دیگر از کاربردهای رایج SWITCH، جایگزینی چندین عبارت شرطی تو در تو است. این کار با تنظیم عبارت به TRUE انجام میشود، همانطور که در مثال زیر نشان داده شده است، که نقطه سفارش مجدد و سطح موجودی ایمن را در محصولات مقایسه میکند تا خطرات احتمالی اتمام موجودی را شناسایی کند:
= SWITCH (
TRUE,
[Reorder Point] > [Safety Stock Level], "Good: Safety stock level exceeded",
[Reorder Point] = [Safety Stock Level], "Minimal: Safety stock level met",
[Reorder Point] < [Safety Stock Level], "At risk: Safety stock level not met",
ISBLANK ( [Reorder Point] ), "Incomplete: Reorder point not set",
ISBLANK ( [Safety Stock Level] ), "Incomplete: Safety stock level not set",
"Unknown"
)
ترتیب مقادیر مهم است. در مثال زیر، نتیجه دوم هرگز بازگردانده نمیشود زیرا مقدار اول نسبت به مقدار دوم محدودیت کمتری دارد. نتیجه در این مثال همیشه A یا C است، اما هرگز B نیست.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
دستور زیر خطا برمیگرداند زیرا نوع داده در آرگومانهای result متفاوت است. به خاطر داشته باشید که نوع داده در تمام آرگومانهای result و else باید یکسان باشد.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)
کاربردهای رایج
- جایگزینی چند شرط
IFبرای خوانایی بیشتر - دستهبندی مقادیر بر اساس مقدار یک ستون
- ساخت KPIهای متنی یا عددی بر اساس وضعیت
نکات مهم
- تابع
SWITCHفقط مقادیر برابر را بررسی میکند؛ برای شرایط پیچیدهتر باید ازSWITCH(TRUE(), ...)استفاده کنید:
SalesLevel :=
SWITCH(
TRUE(),
Sales[Amount] > 1000, "زیاد",
Sales[Amount] > 500, "متوسط",
Sales[Amount] > 0, "کم",
"صفر"
)
در این حالت، شرطها بهصورت منطقی ارزیابی میشوند.
ملاحظات
- عبارتی که قرار است ارزیابی شود میتواند یک مقدار ثابت یا یک عبارت باشد. یک کاربرد رایج این تابع، تنظیم اولین پارامتر روی TRUE است. به مثالهای زیر مراجعه کنید.
- تمام عبارات نتیجه و عبارت else باید از یک نوع داده باشند.
- ترتیب شرطها مهم است. به محض اینکه یک مقدار مطابقت داشته باشد، نتیجه مربوطه برگردانده میشود و سایر مقادیر بعدی ارزیابی نمیشوند. مطمئن شوید که محدودترین مقادیری که قرار است ارزیابی شوند، قبل از مقادیر کمتر محدودکننده مشخص شدهاند. به مثالهای زیر مراجعه کنید.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
