یکی از المان‌های مهم و کاربردی در گزارشات و داشبوردهای طراحی شده با Power BI فیلتر تاریخ است که این امکان را برای شما فراهم می‌کند که با انتخاب بازه زمانی مد نظر خود، نسبت به رصد وضعیت و تحلیل داده‌های خود بپردازید. در نتیجه انعطاف و سهولت بکارگیری تاریخ، موضوع بسیار مهمی می‌باشد.

در Power BI به صورت پیش‌فرض، تاریخ میلادی پشتیبانی می‌شود و در لایه نمایش نیز صرفا تقویم به صورت تقویم میلادی نمایش داده می‌شود که این موضوع برای کاربران ایرانی که نیازمند تقویم شمسی هستند مطلوب نیست.

آموزش گام به گام پیاده‌سازی تاریخ شمسی در Power BI

خلاصه روش: استفاده از Power Query و ساخت یک Function که تاریخ‌های شروع و پایان را به عنوان ۲ پارامتر از شما دریافت می‌کند و یک جدول حاوی اطلاعات تاریخ میلادی و تاریخ شمسی (سال، فصل، ماه، روز و …) را برای شما ایجاد می‌کند. در نتیجه از طریق ایجاد Relationship بین جداول خود با این جدول تاریخ، می‌توانید از ستون‌های مختلف این جدول به عنوان فیلتر تاریخ در داشبورد خود استفاده نمایید.

جزئیات مراحل به شرح زیر است:

۱-در فایل Power BI، مطابق با تصویر زیر گزینه Transform Data را انتخاب کنید تا وارد محیط Power Query Editor شوید:

۲-طبق تصویر زیر، از New Source، گزینه Blank Query را انتخاب کنید:

۳-سپس گزینه Advanced Editor را انتخاب نمایید تا پنجره‌ای مطابق تصویر زیر باز شود:

۴-از طریق این لینک نسبت به دانلود فایل CreateDimDate.m اقدام نمایید. سپس فایل را با استفاده از Notepad باز کنید و محتویات آن را کپی کرده و در پنجره Advanced Editor مرحله قبل Paste کنید و سپس Done را انتخاب نمایید:

۵-تابع شما ساخته می‌شود. حال کافی است برای Start.Date و End.Date مقادیر مد نظر خود را وارد نمایید و سپس بر روی Invoke کلیک کنید تا جدول تاریخ برای شما ایجاد گردد.

 

۶-جدول تاریخ ایجاد شده به عنوان DimDate به صورت زیر خواهد بود:

 

همان‌طور که مشاهده می‌کنید ستون‌هایی نظیر Shamsi Date Number وجود دارند که می‌توانید برای فیلتر تاریخ در داشبوردهای خود از آن استفاده نمایید.

۷-سپس بر روی گزینه Close & Apply در بالا سمت چپ کلیک کنید تا تغییرات شما اعمال گردد.

۸-برای پیاده‌سازی اصولی، لازم است تا جداول Fact را با استفاده از ایجاد Relationship به جدول DimDate ایجاد شده متصل نمایید.

۹-سپس طبق تصویر زیر داده‌های جدول ایجاد شده برای شما نمایش داده می‌شود که می‌توانید با استفاده از ویژوال Slicer ستون‌های مد نظر خود را مشابه تصویر نمایش دهید تا به عنوان فیلتر در داشبورد استفاده گردند.

 

لازم به ذکر است در خصوص استفاده از فیلتر تاریخ در Power BI محدودیت‌های زیر وجود دارد:

  • تقویم شمسی:

تقویم به صورت پیش فرض میلادی بوده و امکان نمایش تقویم شمسی وجود ندارد.

  • فیلتر تاریخ از طریق گزینه‌های آماده:

بدون شک یکی از موارد مورد نیاز و مطلوب، وجود امکان فیلتر سریع تاریخ در داشبوردها تنها از طریق یک کلیک می‌باشد. فرض کنید می‌خواهید “سال جاری”، “ماه جاری”، “ماه قبل” و … را در داشبورد خود فیلتر کنید. این فیلترها، فیلترهای پرکاربرد هستند و به همین علت فیلتر کردن آن‌ها به صورت دستی و با انتخاب شروع و انتهای بازه تجربه منفی کاربری را به همراه خواهد داشت. بنابراین مطلوب این است که گزینه‌های “سال جاری”، “ماه جاری”، “ماه قبل” و … در کنار تقویم وجود داشته باشد تا با کلیک بر روی هر کدام از این موارد، تاریخ فیلتر گردد.

  • تنظیم فیلتر پیش فرض تاریخ:

یکی دیگر از دغدغه‌ها، امکان تنظیم کردن فیلتر پیش فرض تاریخ با توجه به ماهیت داشبورد می‌باشد. بسته به ماهیت داشبورد فیلتر تاریخ مورد نیاز متفاوت خواهد بود.

به عنوان مثال فرض کنید داشبوردی برای بودجه فروش تهیه کرده‌اید و می‌خواهید هر زمان داشبورد را باز می‌کنید، به صورت پیش‌فرض، فیلتر تاریخ “ماه جاری” روی آن اعمال گردد و در صورت نیاز آن را تغییر دهید.

از طرفی دیگر، ممکن است داشبورد دیگری برای آنالیز فروش تهیه کرده باشید که می‌خواهید هر زمان که آن را باز کردید، فیلتر تاریخ “سال جاری” روی آن اعمال گردد.

اگر تعداد داشبوردهای شما زیاد باشد، مدیریت این موضوع چالش بزرگی است که انجام و تغییر آن در آینده زمان‌بر خواهد بود چرا که می‌بایست به ازای هر داشبورد، فیلتر پیش فرض تاریخ را جداگانه تنظیم نمایید و فایل خود را مجدد منتشر کنید.

  • استفاده از تاریخ شمسی و تاریخ میلادی به صورت همزمان:

فرض کنید در داشبورد خود دو اسلایسر قرار داده‌اید. یک اسلایسر برای تاریخ شمسی و یک اسلایسر برای تاریخ میلادی.

یکی از مشکلات Power BI عدم اعمال شدن فیلتر ۲ اسلایسر از نوع Between بر روی یکدیگر است که می‌توان این موضوع را یک باگ تلقی نمود که می‌توانید نمونه آن را در تصویر زیر مشاهده نمایید که علیرغم اینکه تاریخ شمسی بر روی ۱۴۰۳۰۵۰۵ تنظیم شده است، اما تاریخ‌های اسلایسر میلادی متناسب با آن فیلتر نشده است.

چالش‌های “فیلتر تاریخ از طریق گزینه‌های آماده” و “تنظیم فیلتر پیش فرض تاریخ” که مطرح گردید، از طریق روش زیر قابل حل خواهد بود. به عنوان مثال فرض کنید قصد دارید در Slicer گزینه‌ای تحت عنوان “ماه جاری” برای شما نمایش داده شود. برای این کار باید مراحل زیر را طی کنید:

 

۱-وارد محیط Table View از محیط Power BI شوید:

۲-لازم است یک ستون محاسباتی (Calculated Column) جدید ایجاد کنید. کافی است به بخش Home رفته و گزینه New Column را انتخاب کنید.

۳-سپس یک Formula Bar باز می‌شود که می‌بایست فرمول زیر را در آن قرار دهید:

CurrentMonthSlicer =
SWITCH (
    TRUE (),
    DimDate[YYYY-MM] = LOOKUPVALUE ( DimDate[YYYY-MM], DimDate[Date], TODAY () ), “ماه جاری”,
    DimDate[YYYY-MM]
)

در این فرمول ابتدا با استفاده از تابع LOOKUPVALUE مقدار ستون YYYY-MM را که مربوط به ماه-سال شمسی می‌باشد به ازای تاریخ میلادی امروز دریافت می‌کنید تا مشخص گردد در حال حاضر بر اساس تاریخ شمسی، در چه ماه-سال شمسی ای هستید.

سپس تعیین می‌کنید ستون جدیدی که در حال اضافه کردن آن هستید، به ازای تمامی رکوردهایی که ستون YYYY-MM برای آن‌ها برابر با مقدار بدست آمده است، مقدار “ماه جاری” را نمایش دهد و در غیر این صورت همان مقدار اصلی ستون YYYY-MM را نمایش دهد.

۴-با قرار دادن ستون CurrentMonthSlicer که در مرحله قبل ایجاد کردید درون ویژوال Slicer، می‌توانید مشاهده نمایید که یک رکورد تحت عنوان “ماه جاری” وجود دارد که می‌توانید آن را در صفحه داشبورد خود انتخاب کنید تا به عنوان فیلتر پیش‌فرض بر روی داشبورد اعمال گردد.

بدیهی است می‌توانید مشابه همین روش را برای مواردی از قبیل “سال جاری”، “ماه قبل”، “یک هفته اخیر” و … پیاده‌سازی نمایید که تنها با ایجاد تغییر در فرمول ستون محاسباتی امکان‌پذیر خواهد بود.

 

همان‌طور که مشاهده می‌کنید اجرای این روش زمان‌بر بود و به صورت خودکار نمی‌باشد. همچنین از طریق پیاده‌سازی جدول DimDate که توضیح داده شد نیز نمی‌توان به تقویم شمسی دست یافت.

شرکت هوشمند تجارت نمودار، با در نظر گرفتن تمامی این دغدغه‌ها قابلیت‌هایی را در پلتفرم مدیریت داده نمودار (رادار ۳۶۰ درجه سازمان شما) توسعه داده است که به شرح زیر است:

  • نمایش تقویم شمسی
  • امکان سوییچ کردن همزمان بین تقویم شمسی و تقویم میلادی در یک Slicer واحد (رفع مشکل باگ Power BI در خصوص عدم اعمال شدن فیلتر یک Slicer تاریخ بر روی یک Slicer تاریخ دیگر)
  • دارای لیستی از فیلترهای آماده از قبیل “سال جاری”، “ماه جاری”، “سال قبل”، “امروز” و … در کنار تقویم شمسی که می‌توانید تنها با یک کلیک تاریخ را فیلتر کنید و امکان مشخص کردن مقادیر این لیست به ازای هر داشبورد به صورت جداگانه را نیز خواهید داشت.
  • امکان تنظیم فیلتر پیش‌فرض تاریخ به صورت سراسری بر روی تمامی داشبوردها (بدون نیاز به تنظیم برای هر داشبورد به صورت جداگانه) و یا به ازای هر داشبورد به صورت جداگانه. به عنوان مثال می‌توانید تنها با یک کلیک مشخص کنید که فیلتر پیش‌فرض تاریخ برای تمامی داشبوردهای شما، بر روی “سال جاری” و یا سایر موارد مدنظر شما تنظیم گردد. همچنین می‌توانید مشخص نمایید که صرفا برای یک داشبورد خاص، فیلتر پیش‌فرض تاریخ، “ماه جاری” یا مورد دیگری باشد.

 

جزئیات بیشتر در خصوص تغییر فونت در پلتفرم مدیریت داده نمودار (رادار ۳۶۰ سازمان شما) قابل مشاهده است.