تنظیم مقدار پیش فرض برای Slicer در Power BI
در این مطلب قصد داریم با نحوه تنظیم مقدار پیش فرض برای Slicer در Power BI آشنا شویم. گاهی اوقات نیاز داریم تا رفتار محاسبات را جوری تنظیم کنیم که اگر کاربر مقداری را انتخاب نکرد، محاسبات بر اساس مقدار پیش فرض انجام شود.
با آموزش دیگری از زبان DAX با ما همراه باشید. فرض کنید کاربر مقداری را انتخاب نکرده است و شما می خواهید در این صورت محاسبات بر اساس سال جاری صورت پذیرد.
مثل همیشه از پایگاه داده AdventureworksDW برای پیاده سازی مثال استفاده کردیم. خب بریم پله پله این سناریو رو پیاده سازی کنیم. اول از همه یه گزارش بسازیم.
گزارش هایی مانند میزان فروش بر اساس گروه های مختلف کالا، میزان فروش بر اساس گروه های شغلی مختلف و یک Card که میزان فروش را نمایش می دهد. یک اسلایسر از سال های مختلف نیز در گزارش تعبیه شده است. تصویر گزارش را مشاهده می کنید.
طبیعی است با انتخاب هر سال مقادیر بر اساس آن مقدار فیلتر می شود، اما نیاز ما این است که در صورت انتخاب نشدن مقدار از سوی کاربر، محاسبات بر اساس مقدار سال آخر یعنی 2014 فیلتر شود.
برای این کار از کد زیر استفاده می کنیم.
در واقع با این کد می گوییم، اگر مقداری از اسلایسر سال انتخاب شد، میزان فروش را مانند همیشه محاسبه کن، در غیر اینصورت اگر مقداری انتخاب نشد میزان فروش برای سال 2014 را نمایش بده! نتیجه این محاسبات را در تصویر زیر مشاهده می کنید.
همان طور که مشاهده می کنید هیچ مقداری از اسلایسر انتخاب نشده ولی تمام محاسبات برای سال 2014 انجام می شود. توجه کنید از این مژر به جای مژر فروش باید در تمامی ویژوال ها و Card استفاده نمایید.
شاید مشکل این باشد که کاربر نداند محاسبات برای چه سالی در حال انجام است؟ پس باید این مشکل را حل کنیم. یک Card به گزارش اضافه می کنیم و به کاربر سال انتخابی را نمایش می دهیم.
با این کد می گوییم اگر کاربر، مقداری را انتخاب کرد، آن مقدار را نمایش بده، در غیر این صورت عدد 2014 را نمایش بده.
تصویر زیر را مشاهده نمایید. هیچ انتخابی توسط کاربر انجام نشده اما Card عدد 2014 را نمایش می دهد.
مشکل دیگر ما این است که اگر کاربر بیش از یک انتخاب انجام دهد Card با خطا مواجه خواهد شد چرا که نمی تواند بیش از یک مقدار را نمایش دهد. پس کد را به صورت زیر اصلاح می کنیم.
این کد به این صورت عمل می کند که اگر بیش از یک سال توسط کاربر انتخاب شد، مقادیر انتخابی را با تابع CONCATENATEX و با جدا کننده “,” به هم بچسباند.
به تصویر زیر توجه کنید.
در نهایت مشکل نهایی ما این است که ما سال 2014 را برای مقدار پیش فرض انتخاب کردیم. در حالی که این کار اشتباه است. سال بعد که سال جاری 2015 است، باید تمام کد های خود را اصلاح کنیم؟ البته که نه!
باید باز هم کد را بهسازی کنیم. با این روش سال جاری را استخراج کرده و در قالب یک متغیر ذخیره و از آن استفاده می نماییم.
همچنین کد بعدی را نیز به صورت زیر اصلاح می کنیم.
در این مطلب با نحوه تنظیم مقدار پیش فرض برای Slicer در Power BI آشنا شدیم. اگر از این روش استفاده کردید، مشکلات و پیشنهادات خود را با ما در میان بگذارید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
سلام خیلی ممنون بابت آموزش ها.
یه مشکلی دارم در ارتباط با همین آموزشتونه. من 3 تا ستون دارم تو دیتابیس purchase به نام های date-price- product.
من یه اسلایسر دارم که product رو اسلایس میکنه و براساسش تو یه لاین چارت نشون میده. و پیشفرض همه رو تو چارتم نشون میده که خیلی زشت میشه نمودارم.
میخوام اگر هیچ چیزی انتخاب نکردم چیزی نشون نده و یا یکی از گزینه ها رو نشون بده.
کد های رو که میزنم نمیتونم درستش کنم. از switch و selectvalue هم استفاده کردم اما نتونستم.
سلام
IF(HASONEFILTER(ProductName), measure)
سلام ممنون برای زمانی که اختصاص میدید و دانشی که به اشتراک می گذارید
من تازه شروع به کار با پاور بی آی دسکتاپ کردم و با آزمون و خطا و سرچ در اینترنت تونستم ی دشبورد بسازم. یکی از چالش های جدیدم دقیقا موردی هست که شما اشاره کردید. میخوام بدونم مطلبی که گذاشتید در پاور بی آی دسکتاپ کاربرد داره یا نه ؟
اگر بله. این فرمول رو نمی دونم کجا برای اسلایسر باید بنویسم.
سلام
ممنون از لطفتون
در مورد این فرمول و هر فرمول دیگه ای تا این لحظه امکان فرمول نویسی برای اسلایسر وجود نداره
شما فقط از ستون ها می تونید در اسلایسر استفاده کنید
این فرمول ها در Values نمودار ها و چارت ها و جداول قرار می گیرن
سلام
چنتاچه بخوایم از تاریخ شمسی استفاده کنیم امکان پذیرنیست
همچنین در استفاده از تاریخ شمسی به خاطر ماهیت text بودن ، اصلا مژر قابلیت استفاده در اسلایسر راندارد
کلا هیچ مژری قابلیت استفاده در اسلایسر رو ندارد
سلام ممنون از آموزشتون
من متوجه نشدم کد رو باید در کجا بنویسیم؟
یا مژر را باید به کدام ویژوال تخصیص بدیم؟
با سلام و عرض ادب
ضمن تشکر از مطالب ارائه شده،
بنده میخواهم وقتی فایل داشبورد را باز میکنم و یا در ریپورت سرور استفاده می شود، اسلایسر سال یا ماه در حالت انتخاب سال یا ماه جاری باز شود و بعد از آن کاربر هر انتخابی که میخواهد داشته باشد. لطفا راهنمایی فرمایید.
سلام باید یک اسلایسر مخفی با تاریخ میلادی قرار دهید و آن را روی حالت Relative Date تنظیم کنید و Today را انتخاب کنید تا بطور خودکاری روی تاریخ های جاری پروژه تاثیر بگذارد. خود اسلایسر متنیِ شمسی چنین امکانی ندارد.