من محمد پوربافرانی میخوام در این مقاله آموزش استفاده از تاریخ هجری شمسی رو با برخی امکانات لازم رو ارائه بدم.
همونطور که قطعا باهاش برخورد داشتید در حال حاضر Power BI از تاریخ هجری شمسی پشتیبانی نمی کنه و از امکاناتی مثل روز، تاریخ، ترتیب، ماه و حتی ساختار درختی پشتیبانی نمی کنه. پس نیاز داریم که بعضی کارهارو رو خودمون به صورت دستی انجام بدیم. که در پائین مراحل کار رو به ترتیب توضیح می دم.
مرحله اول: ساخت جدول تاریخ فارسی
من برای این کار توی دیتابیسم یک جدول ایجاد کردم که شامل اطلاعات لازم برای کار با تاریخ فارسی هست ساختار جدول در تصویر زیر قابل ملاحظه است:
کوئری ساخت جدول بالا در SQL Server:
CREATE TABLE [dbo].[tbl_Calendar](
[ID] [int] NOT NULL,
[DateTime] [date] NOT NULL,
[year] [smallint] NOT NULL,
[quarter] [tinyint] NOT NULL,
[month] [tinyint] NOT NULL,
[dayofyear] [smallint] NOT NULL,
[day] [smallint] NOT NULL,
[week] [tinyint] NOT NULL,
[weekday] [tinyint] NOT NULL,
[persiandate] [nvarchar](10) NOT NULL,
[Pyear] [smallint] NULL,
[Pquarter] [tinyint] NULL,
[Pmonth] [tinyint] NULL,
[Pday] [smallint] NULL,
[Pweek] [tinyint] NULL,
[PDayOfYear] [smallint] NULL,
[PDayName] [nvarchar](50) NULL,
[PMonthName] [nvarchar](50) NULL,
[PSeasonName] [nvarchar](20) NULL
) ON [PRIMARY]
من با استفاده از C# جدول رو از سال 1380 تا 1410 پر کردم. با این ساختاری که می بینید خیلی از پردازش ها کاسته می شه و همینطور شما هر وقت که لازم داشته باشید بدون توابع سخت و پیچیده به سادگی هر اطلاعاتی از روز رو که لازم داشتید استخراج کنید.
من برای سادگی کار شما اکسل این فایل رو آماده کردم که از این آدرس می تونید اون رو دانلود و همونطور که در مطلب وارد کردن فایل اکسل از OneDrive به عنوان دیتاست به PowerBI گفتم استفاده کنید.
در ضمن یک وب سرویس هم آماده کردم تا در صورت نیاز با استفاده از اون میتونید اطلاعات تاریخ رو به صورت آنلاین و در هر بازه دلخواه دریافت و استفاده کنید که توضیحاتش رو در مقاله وارد کردن اطلاعات تاریخ فارسی از طریق وب سرویس طراحی شده می تونید مطالعه کنید.
مرحله دوم: وارد کردن اطلاعات به Power BI
ابتدا پس از باز کردن Power BI Desktop از قسمت GetData گزینه Excel رو مطابق شکل باز می کنیم:
پس از انتخاب فایل مورد نظر و کمی صبر صفحه ای باز میشه که در اون می بایست جدول مورد نظرمون رو انتخاب کرده و دکمه Transform Data رو میزنیم تا صفحه Power Query Editor باز بشه. در این صفحه هر آنچه از ستون های مورد نظرمون هست رو نگه داشته و اون ستون هایی که نیاز نداریم و استفاده نمیشن در گزارشمون حذف می کنیم.
از اونجائی که نیازی به اطلاعات تاریخ میلادی نداشتم اونهارو حذف و نام برخی ستون رو عوض کردم.
ممکنه که در این قسمت ما نیاز داشته باشیم تا برخی تغییرات در این جدول اعمال کنیم به عنوان مثال دوره شش ماهه از سال رو هم محاسبه کنیم. برای این کار از قسمت Add Column گزینه ی Conditional Column رو انتخاب کرده و در صفحه مورد نظر مقادیر رو مطابق تصویر زیر اعمال می کنیم و Ok رو می زنیم.
در نهایت گزینه ی Close & Apply رو انتخاب می کنیم تا داده ها به Power BI اضافه بشن.
مرحله سوم: ساختار درختی
در این مرحله باید ساختار درختی تاریخ رو برای استفاده در نمودارهامون بسازیم. در صفحه Model لیست جداول مورد استفاده در گزارش قابل مشاهده است. با کلیک بر روی جدول PersianCalendar در سمت راست صفحه ستون های جدولمون قابل مشاهده هستند با راست کلیک بر روی سال گزینه Create Hierarchy رو انتخاب می کنیم.
سپس در صفحه باز شده آیتم های مورد نظرمون رو مطابق تصویر زیر به ترتیب دلخواه اضافه می کنیم:
نکته: در مورد ساختار درختی ما می تونیم به تعداد دلخواه برای کاربردهای مختلف این ساختار رو ایجاد کنیم.
مرحله چهارم: تنظیم ترتیب نمایش هر آیتم
برای نمایش زیبای گزارشات بهتره که ماه هایی که داریم به ترتیب سال نمایش بدیم و همینطور مابقی موارد. برای این کار در قسمت Fields بر روی هر کدوم از ستون ها مورد نظر کلیک کرده و در صفحه Properties در قسمت Advanced مورد Sort by column را تغییر می دهیم. در مثال زیر ما نام ماه را بر اساس ماه(شماره ماه) Sort می کنیم. همین کار را برای مابقی موارد نیز انجام می دهیم.
مرحله پنجم: استفاده در نمودار
خوب حالا که تقریبا تمام کارهای لازم رو برای ساخت جدول تاریخمون رو انجام دادیم حالا نوبت به استفاده ازش در نمودار می رسه. برای این کار کافیه که نمودار مورد نظرمون رو در صفحه اضافه کنیم و در نهایت ساختار درختی تاریخی که ساختیم رو به قسمت Axis اضافه کنیم.
در این قسمت هر زیر شاخه ای رو که نیاز نداشتیم می تونیم به سادگی حذف کنیم به عنوان مثال در نمودار مورد نظر من نیازی به دوره و تاریخ ندارم پس اون هارو حذف می کنم.
تمام شد همونطور که در تصاویر زیر مشخص هست به صورت درختی با کلیک بر روی هر ستون می توان به زیر شاخه آن مراجعه کرد و همچنین این موارد به به ترتیب چیده شده اند.