• مطالب آموزشی
    • تمام مطالب آموزشی
    • Excel
    • Power BI
    • DAX
  • دوره های آموزشی
    • کلاس اکسل پیشرفته
    • کلاس داشبورد با Power BI
    • کلاس DAX و مدلسازی داده‎
    • Power BI Report Server
    • گالری تصاویر
  • پکیج های آموزشی
    • اکسل
    • Power BI
    • SQL
    • سبد خرید
  • معرفی
  • تماس
  • اینستاگرام
  ورود
گروه تحلیلگری
  • مطالب آموزشی
    • تمام مطالب آموزشی
    • Excel
    • Power BI
    • DAX
  • دوره های آموزشی
    • کلاس اکسل پیشرفته
    • کلاس داشبورد با Power BI
    • کلاس DAX و مدلسازی داده‎
    • Power BI Report Server
    • گالری تصاویر
  • پکیج های آموزشی
    • اکسل
    • Power BI
    • SQL
    • سبد خرید
  • معرفی
  • تماس
  • اینستاگرام
0
ثبت نام / ورود

وبلاگ

تابع IF و SWITCH در زبان DAX

در این مطلب به برسی دو تابع IF و SWITCH در زبان DAX می پردازیم که از توابع بسیار مهم و جذاب در زبان DAX به شمار می روند.

توابع منطقی

بررسی شرط های منطقی توسط Logical Function یا همان توابع منطقی در زبان DAX امکان پذیر است. توابع زیر ما را در این امر یاری می کنند.

IF, IFERROR, AND, OR, SWITCH, FALSE, TRUE

این توابع هنگامی که می خواهیم محاسبات مختلفی با توجه به شرایط مختلف صورت پذیرد، به کمک ما می آیند. در این مطلب به بررسی و مقایسه IF و SWITCH می پردازیم.

IF

همان طور که می دانید IF یک تابع منطقی (Logical Function) است که در اکثر زبان های برنامه نویسی وجود دارد و برای گذاشتن شرط در کد های DAX به کمک کاربر می آید.

فرض کنید می خواهیم ستونی در جدول کالا ایجاد کنیم که اگر کالایی پایین تر از ۱۰۰۰ دلار قیمت دارد، ارزان و اگر بالاتر قیمت دارد گران درج شود.

برای این منظور کد زیر را نوشته و ستون مورد نظر را ایجاد می کنیم.

PriceType =
IF ( ‘Product'[Unit Price] > ۱۰۰۰, “Expensive”, “Cheap” )

بعد از ایجاد کد با خروجی زیر مواجه خواهیم شد.

تابع IF و SWITCH در زبان DAX

IF های تو در تو

گاهی اوقات تعداد شروط بیشتر است و باید از IF های تو در تو استفاده کنیم. به طور مثال می خواهیم اگر رنگ کالا سفید یا مشکی بود، از عبارت بسیار پرطرفدار استفاده شود، اگر قرمز یا آبی بود از عبارت پرطرفدار، نقره ای یا طلایی، محبوب و در غیر این صورت از عبارت کم طرفدار استفاده شود.

به این منظور کد زیر را نوشته و اجرا می کنیم.

ColorType =
IF (
    ‘Product'[Color] = “White”
        || ‘Product'[Color] = “Black”,
    “بسیار پرطرفدار”,
    IF (
        ‘Product'[Color] = “Blue”
            || ‘Product'[Color] = “Red”,
        “پرطرفدار”,
        IF (
            ‘Product'[Color] = “Silver”
                || ‘Product'[Color] = “Gold”,
            “محبوب”,
            “کم طرفدار”
        )
    )
)

لازم به ذکر است که عملگر || در زبان DAX به معنی یا (OR) می باشد. در نهایت نتیجه به صورت زیر نمایش داده خواهد شد.

تابع IF و SWITCH در زبان DAX

اگر نیاز به توضیح بیشتری در مورد کد هستید تصویر زیر را مشاهده کنید.

تابع IF و SWITCH در زبان DAX

SWITCH

تابع SWITCH نیز از دسته توابع منطقی است که عملکردی مشابه IF دارد اما گاهی اوقات نوشتن کد ها را آسان تر می کند. در نوشتن SWITCH نیازی به تکرار کردن نام فیلد (color) نیست.

همان مثال قبل را با تابع SWITCH بنویسیم.

=
SWITCH (
    ‘Product'[Color],
    “Black”, “بسیار پرطرفدار”,
    “White”, “بسیار پرطرفدار”,
    “Blue”, “پرطرفدار”,
    “Red”, “پرطرفدار”,
    “Gold”, “محبوب”,
    “Silver”, “محبوب”,
    “کم طرفدار”
)

همان طور که مشاهده می کنید تابع SWITCH هم مانند IF یک آرگومان در غیر این صورت (ELSE) دارد که در آن قسمت کم طرفدار درج شده است، بدین معنا که اگر هیچ کدام از شرط ها برقرار نشد قسمت در غیر این صورت فعال می شود.

در این جا گفته شده اگر هیچ کدام از شرط ها برقرار نشد عبارت کم طرفدار درج شود.

توجه نمایید که از SWITCH زمانی استفاده می شود که تعداد مقادیر محدودی در ستون مورد نظر وجود دارد. به طور مثال می خواهیم در کنار شماره ماه، نام آن را درج کنیم که در نهایت ۱۲ مقدار برای آن وجود دارند. پس زمانی که ستون ما دارای مقادیر بسیار زیاد باشد استفاده از SWITCH خیلی منطقی به نظر نمی رسد.

SWITCH TRUE

حال فرض کنید می خواهیم ستونی در جدول کالا ایجاد کنیم که در صورتی که قیمت کالایی زیر ۵۰۰ دلار بود عبارت خیلی ارزان، در صورتی که بین ۵۰۰ تا ۱۵۰۰ دلار بود عبارت ارزان، بین ۱۵۰۰ تا ۲۵۰۰ گران و بالای ۲۵۰۰ خیلی گران درج شود.

PriceType =
IF (
    ‘Product'[Unit Price] <= ۵۰۰,
    “Very Cheap”,
    IF (
        ‘Product'[Unit Price] <= ۱۵۰۰,
        “Cheap”,
        IF ( ‘Product'[Unit Price] <= ۲۵۰۰, “Expensive”, “Very Expensive” )
    )
)

حال سعی کنید همین کد را با SWITCH بنویسید. همان طور که متوجه شدید نوشتن با SWITCH ممکن به نظر نمیرسد و باید از SWITCH TRUE استفاده نمایید.

=
SWITCH (
    TRUE (),
    ‘Product'[Unit Price] <= ۵۰۰, “Very Cheap”,
    ‘Product'[Unit Price] <= ۱۵۰۰, “Cheap”,
    ‘Product'[Unit Price] <= ۲۵۰۰, “Expensive”,
    “Very Expensive”
)

در نهایت با هر دو روش فوق الذکر نتیجه به صورت زیر خواهد بود.

تابع IF و SWITCH در زبان DAX

مقایسه توابع IF و SWITCH

در مقایسه تابع IF و SWITCH در زبان DAX باید گفت، استفاده از SWITCH، خوانایی کد را بسیار بالا می برد. استفاده از IF های تو در تو خواندن کد و عیب یابی آن را سخت می کند. البته SWITCH هیچ برتری از حیث عملکرد بر IF ندارد. هنگامی که از SWITCH استفاده می کنید در پشت پرده شروط شما به IF های تو در تو تبدیل می شود. می توان گفت SWITCH، ساده شده IF های تو در تو است.

ضمنا همان طور که گفته شد از SWITCH معمولا برای ستون هایی استفاده می شود که مقادیر یکتای زیادی نداشته باشند و گسسته باشند، مانند رنگ، ماه، سطح تحصیلی و ….

یک استفاده بسیار مهم تابع SWITCH در داینامیک کردن مژر است.

درباره حسین وثوقی

دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...

نوشته های بیشتر از حسین وثوقی
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
مطالب زیر را حتما بخوانید
  • کاربرد پارامتر در پاوربی آی
    کاربرد پارامتر و تحلیل حساسیت در پاور بی آی

    2.23k بازدید

  • استفاده از متغیر و تابع EARLIER در زبان DAX

    1.42k بازدید

  • پانزده تابع DAX که باید حتما یاد بگیرید

    2.24k بازدید

  • رنگ بندی شرطی با زبان DAX
    رنگ بندی شرطی با زبان DAX

    685 بازدید

  • مفهوم Context و انواع آن در زبان DAX
    مفهوم Context و انواع آن در زبان DAX

    949 بازدید

  • آموزش DAX در Power Bi قسمت سوم

    902 بازدید

guest
تعداد ماههای سال به عدد
guest
1 دیدگاه
قدیمی ها
جدید ها بیشترین رای
Inline Feedbacks
View all comments
مسعود
مسعود

حسین آقا واقعا کارتون درسته خیلی بدردم خورد سپاسگزارم

0
پاسخ
جستجو
جستجو برای:
دسته بندی ها
  • Charts
  • DAX
  • Excel
  • Power BI
  • Power Query
  • هوش تجاری
بسته های آموزشی
  • Excel
  • Power BI
  • SQL
درباره گروه تحلیلگری

معتقدیم آموزش شروع یک تعهد بلند مدت است. این را از مشتریان ما سوال کنید.

اطلاعات تماس
  • تهران، خیابان مطهری، ابتدای خیابان سنایی، کوچه بیست و یکم
  • 543 30 910 - 021
پیوندها
  • آموزش Power BI
  • آموزش SQL
  • آموزش اکسل
دسته بندی محصولات
Excel Power BI SQL
نماد الکترونیک
wpDiscuz

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت