تاریخ شمسی در Power BI | راهنمای جامع انتخابگر تاریخ شمسی
یکی از پرتکرارترین سؤالهای کاربران فارسیزبان این است: «چطور در Power BI تاریخ شمسی انتخاب کنیم؟» تقویم و اسلایسرهای پیشفرض Power BI میلادیاند و راهحلهای رایج، مثل اسلایسر روی ستون متنی شمسی، نه تقویم دارند، نه بازههای آماده و نه تجربه کاربری راحتی برای مدیران. در این مطلب ویژوال سفارشی انتخابگر تاریخ شمسی Power BI را از صفر تا صد معرفی میکنیم: پنج روش انتخاب تاریخ، دورههای زمانی آماده، تعطیلات و مناسبتها، آموزش راهاندازی گامبهگام، محدودیتها و رفع اشکالهای رایج.
در یک نگاه
- نمایش تقویم کاملاً فارسی و راستبهچپ، با اعمال فیلتر روی همان ستون تاریخ میلادی مدل
- پنج حالت انتخاب: تکتاریخ، نسبی (قبل از / بعد از)، بازه تاریخ، از … تا … و دوره زمانی
- ۱۳ دوره زمانی آماده مثل «ماه جاری»، «از ابتدای سال تا امروز» و «از ابتدای پارسال تا چنین روزی»
- نمایش روزهای تعطیل با رنگ دلخواه و نمایش متن مناسبت هر روز
- بدون نیاز به ستون شمسی برای فیلترکردن و بدون درخواست هیچ مجوز دسترسی خارجی
مشکل تاریخ شمسی در Power BI چیست؟
Power BI دادههای تاریخ را با تقویم میلادی ذخیره و نمایش میدهد. برای گزارشهایی که مخاطبشان فارسیزبان است، معمولاً یکی از این راهها امتحان میشود:
- اسلایسر روی ستون متنی شمسی (مثل
1405/02/15): فهرستی طولانی از متنها بدون نمای تقویم؛ انتخاب یک بازه چندماهه با آن عملاً دشوار است. - اسلایسرهای جداگانه سال، ماه و روز شمسی: برای انتخاب ماه یا سال مناسب است، اما بازهای مثل «۲۰ فروردین تا ۱۰ خرداد» را بهسادگی نمیسازد.
- اسلایسر Between یا Relative date پیشفرض: تقویم آن میلادی است و «ماه جاری» و «سال جاری» در آن، ماه و سال میلادی معنا میشوند، نه شمسی.
نتیجه این است که کاربر نهایی یا باید تاریخ را در ذهن تبدیل کند، یا گزارشساز باید دهها ستون و Measure کمکی بسازد. انتخابگر تاریخ شمسی برای حل همین مشکل ساخته شده است.
انتخابگر تاریخ شمسی Power BI چیست؟
Persian Date Picker یک ویژوال سفارشی (Custom Visual) برای Power BI است که ستون تاریخ میلادی مدل داده را دریافت میکند، آن را بهصورت تقویم شمسی به کاربر نشان میدهد و هر انتخابی که کاربر انجام دهد، بهصورت فیلتر روی همان ستون میلادی اعمال میشود. یعنی:
- مدل داده شما استاندارد و میلادی باقی میماند و توابع هوش زمانی DAX مثل قبل کار میکنند.
- برای فیلترکردن به ستون تاریخ شمسی نیازی ندارید؛ تبدیل تاریخ داخل خود ویژوال انجام میشود.
- فیلتر از طریق رابطه جدول تاریخ به همه جدولهای Fact مرتبط منتقل میشود و همه ویژوالهای صفحه را تحت تأثیر قرار میدهد.
رابط ویژوال کاملاً فارسی و راستبهچپ است و برای فایلهای Power BI Desktop و گزارشهای منتشرشده در Power BI Service بهصورت فایل PBIVIZ وارد گزارش میشود. این ویژوال یکی از ویژوالهای پک ویژوالهای فارسی و راستبهچپ Power BI گروه تحلیلگری است.
پنج روش انتخاب تاریخ شمسی
ویژوال پنج زبانه (تب) دارد که هر کدام برای یک سناریوی رایج گزارشگیری طراحی شده است. هر تب را میتوانید از تنظیمات ویژوال پنهان کنید تا فقط حالتهای لازم برای کاربرانتان نمایش داده شوند.
| تب | روش کار | زمان اعمال فیلتر |
|---|---|---|
| تکتاریخ | کلیک روی یک روز در تقویم | فوری |
| نسبی | تایپ یک تاریخ و انتخاب «قبل از» یا «بعد از» | با دکمه «اعمال» |
| بازه تاریخ | کلیک روی روز شروع و سپس روز پایان | پس از انتخاب روز دوم |
| از … تا … | تایپ تاریخ شروع و پایان | با دکمه «اعمال» |
| دوره زمانی | انتخاب یکی از ۱۳ دوره آماده | فوری |
۱. تکتاریخ: انتخاب یک روز مشخص
در این تب، تقویم ماه جاری نمایش داده میشود و روز جاری با رنگ جداگانه مشخص است. با کلیک روی هر روز، گزارش فوراً به همان روز فیلتر میشود و دکمه «امروز» شما را با یک کلیک به تاریخ امروز میبرد. این حالت برای گزارشهای روزانه مثل فروش روز، تولید روز یا عملکرد یک شیفت مناسب است و چون فقط یک تاریخ در فیلتر قرار میگیرد، Measureهایی که با SELECTEDVALUE نوشته شدهاند بهدرستی مقدار میگیرند.

۲. نسبی: قبل از یا بعد از یک تاریخ
کاربر یک تاریخ شمسی تایپ میکند و یکی از گزینههای «قبل از» یا «بعد از» را برمیگزیند؛ با زدن دکمه «اعمال» فیلتر اعمال میشود. این حالت برای سناریوهایی مثل «همه فاکتورهای قبل از شروع قرارداد» یا «عملکرد بعد از راهاندازی خط جدید» کاربرد دارد.
نکته مهم: در هر دو گزینه، خود روز مبنا جزو نتیجه نیست. برای مثال «بعد از ۱۴۰۵/۰۱/۱۵» از ۱۶ فروردین شروع میشود و «قبل از ۱۴۰۵/۰۱/۱۵» تا پایان ۱۴ فروردین را شامل میشود.

۳. بازه تاریخ: انتخاب شروع و پایان روی تقویم
در این تب ابتدا روز شروع و سپس روز پایان را روی تقویم انتخاب میکنید و روزهای بین آنها با رنگ بازه مشخص میشوند. فیلتر بلافاصله پس از انتخاب روز دوم اعمال میشود. هر دو روز ابتدا و انتها داخل نتیجهاند؛ حتی اگر ستون تاریخ شما ساعت هم داشته باشد، کل روز پایان در فیلتر قرار میگیرد.

۴. از … تا …: تایپ بازههای طولانی
برای بازههای چندماهه یا چندساله، ورقزدن تقویم وقتگیر است. در این تب تاریخ شروع و پایان را تایپ میکنید و دکمه «اعمال» را میزنید. ویژوال ورودی را هوشمندانه میخواند:
- ارقام فارسی، عربی و انگلیسی را میپذیرد؛
۱۴۰۵/۰۱/۰۱و1405/01/01هر دو درستاند. - جداکنندههای
/،-و.را میشناسد. - اگر تاریخ شمسی نامعتبر باشد (مثلاً ۳۰ اسفند در سال غیرکبیسه) یا تاریخ پایان قبل از شروع باشد، پیام خطا نشان میدهد و فیلتر اشتباه اعمال نمیشود.

۵. دوره زمانی: ۱۳ بازه آماده شمسی
پرکاربردترین تب برای مدیران همین است: یک کلیک و گزارش به دوره مورد نظر فیلتر میشود. همه دورهها بر اساس تقویم شمسی و تاریخ امروزِ سیستم نمایشدهنده محاسبه میشوند و هفته از شنبه شروع میشود.
| دوره | محدوده |
|---|---|
| امروز / دیروز | همان یک روز |
| هفته جاری | شنبه تا جمعه همین هفته |
| هفت روز اخیر | هفت روز منتهی به امروز |
| هفته قبل | شنبه تا جمعه هفته گذشته |
| ماه جاری / ماه قبل | کل ماه شمسی جاری یا قبلی |
| از اول ماه تا امروز | ابتدای ماه شمسی جاری تا امروز |
| سی روز اخیر | سی روز منتهی به امروز |
| سال جاری / پارسال | ۱ فروردین تا ۲۹ یا ۳۰ اسفند همان سال شمسی |
| از ابتدای سال تا امروز | ۱ فروردین امسال تا امروز |
| از ابتدای پارسال تا چنین روزی | ۱ فروردین پارسال تا همین روز و ماه در سال گذشته؛ مناسب مقایسه با «از ابتدای سال تا امروز» |

نوار بالای ویژوال همیشه آخرین فیلتر اعمالشده را نشان میدهد تا کاربر بداند گزارش در چه بازهای است. جابهجایی بین تبها فیلتر قبلی را پاک نمیکند و برای حذف فیلتر کافی است دکمه «پاککردن» را بزنید.
نمایش تعطیلات و مناسبتها در تقویم
علاوه بر ستون تاریخ، دو فیلد اختیاری هم میتوانید به ویژوال بدهید:
فیلد Holiday: رنگیکردن روزهای تعطیل
روزهای تعطیل با رنگی که خودتان انتخاب میکنید (پیشفرض قرمز) نمایش داده میشوند. ویژوال این قالبها را برای ستون Holiday میشناسد:
- تاریخ شمسی متنی مثل
1405/01/01،۱۴۰۵-۰۱-۰۱یا1405.01.01 - تاریخ شمسی فشرده مثل
14050101 - تاریخ میلادی
- ستون علامتگذاری: مقدار
true، عدد غیرصفر یا متن غیرخالی یعنی تعطیل؛ مقادیر0،false،no، «خیر» و «عادی» تعطیل حساب نمیشوند.
جمعه بهصورت پیشفرض تعطیل است و تعطیلی پنجشنبه را هم میتوانید از تنظیمات فعال کنید؛ برای سازمانهایی که پنجشنبهها تعطیلاند، این گزینه کاربردی است.
فیلد Events: نمایش مناسبت روز
اگر ستونی شامل عنوان مناسبتها (مثل «نوروز»، «روز ملی صنعت» یا رویدادهای داخلی سازمان) داشته باشید، با انتخاب هر روز متن مناسبت آن روز در پایین تقویم نمایش داده میشود. متنهای طولانی کوتاه میشوند و متن کامل با نگهداشتن نشانگر ماوس روی آن دیده میشود.
بهترین ساختار: ستونهای تعطیلی و مناسبت را در همان جدول تاریخ (Date Table) و همردیف با ستون تاریخ قرار دهید. اگر یک روز چند مناسبت دارد، پیش از ورود به ویژوال آنها را در یک متن ترکیب کنید (مثلاً با ، یا |).
تنظیمات ظاهری و رفتاری ویژوال
همه تنظیمات از پنل Format ویژوال و با عناوین فارسی در دسترساند:
- نمایش یا پنهانکردن هر تب بهصورت مستقل، و تعیین حالت انتخاب پیشفرض
- منبع فهرست سالها: بر اساس داده موجود در مدل، بازه ثابت ۱۳۰۰ تا ۱۵۰۰ یا بازه سفارشی
- هماهنگی با فیلترهای خارجی: اگر تاریخها توسط اسلایسر یا فیلتر دیگری محدود شوند، تاریخ ابتدا و انتهای ویژوال بهروز میشود.
- تعطیلی پنجشنبه و جمعه
- فونت: نام فونت دلخواه، اندازه خودکار (واکنشگرا به ابعاد ویژوال) یا دستی، و حالت ضخیم
- رنگها: رنگ اصلی، رنگ داخل بازه، روز جاری، متن، متن فرعی، پسزمینه، روزهای تعطیل و متن مناسبت
اگر رنگ اصلی و رنگ روز جاری را تعیین نکنید، ویژوال از رنگهای Theme گزارش استفاده میکند و اگر فونتی وارد نکنید، فونت محیط Power BI را به ارث میبرد؛ بنابراین بدون هیچ تنظیمی هم با ظاهر گزارش هماهنگ است. Format Painter فقط ظاهر ویژوال را منتقل میکند و تاریخ انتخابشده را کپی نمیکند.
آموزش راهاندازی انتخابگر تاریخ شمسی در Power BI
- واردکردن ویژوال: در پنل Visualizations روی سهنقطه کلیک کنید، گزینه Import a visual from a file را بزنید و فایل
PBIVIZرا انتخاب کنید. - قراردادن ستون تاریخ: ویژوال را روی صفحه بگذارید و ستون Date جدول تاریخ را در بخش «تاریخ میلادی» قرار دهید. روی فیلد کلیک راست کنید و مطمئن شوید خود ستون Date انتخاب شده است، نه Date Hierarchy (سلسلهمراتب Year/Quarter/Month/Day).
- افزودن فیلدهای اختیاری: در صورت نیاز ستونهای تعطیلی و مناسبت را در بخشهای Holiday و Events قرار دهید.
- بررسی رابطهها: مطمئن شوید بین جدول تاریخ و جدولهای Fact یک رابطه فعال یکبهچند وجود دارد.
- تنظیم رفتار: تبهای لازم، حالت پیشفرض، منبع سالها، تعطیلی پنجشنبه/جمعه و هماهنگی با فیلترهای خارجی را تنظیم کنید.
- تنظیم ظاهر: رنگها و فونت را مطابق هویت بصری گزارش انتخاب کنید یا Theme را مبنا قرار دهید.
- آزمون فیلتر: یک Table visual شامل ستون تاریخ و یک Measure بسازید و حالتهای مختلف را امتحان کنید.
- آزمون در محیط مقصد: بعد از انتشار، رفتار ویژوال را در Power BI Service (و در صورت استفاده، Bookmarkها) بررسی کنید.
ساختار پیشنهادی مدل داده
بهترین نتیجه را با یک جدول تاریخ مستقل میگیرید که یک ستون Date یکتا (هر روز یک ردیف) دارد و با جدولهای Fact رابطه فعال دارد. ستونهای تعطیلی و مناسبت هم بهتر است در همین جدول باشند. اگر هنوز با ساخت جدول تاریخ و رابطهها آشنا نیستید، دوره رایگان آموزش Power BI نقطه شروع خوبی است.
نمایش بازه انتخابشده با DAX
در حالت تکتاریخ، SELECTEDVALUE تاریخ انتخابشده را برمیگرداند؛ اما وقتی بازه چندروزه انتخاب میشود، چند تاریخ در فیلتر وجود دارد و SELECTEDVALUE خالی (Blank) میشود. این رفتار طبیعی DAX است، نه خطای ویژوال. برای بازهها از MIN و MAX استفاده کنید:
Range Start = MIN ( 'Date'[Date] )
Range End = MAX ( 'Date'[Date] )
Days Count = COUNTROWS ( VALUES ( 'Date'[Date] ) )
Selected Day Sales =
IF ( HASONEVALUE ( 'Date'[Date] ), [Total Sales] )
اگر جدول تاریخ شما ستون تاریخ شمسی متنی هم دارد، میتوانید با MIN و MAX روی همان ستون، ابتدا و انتهای بازه را به شمسی در یک Card نمایش دهید.
نمونه داشبورد با انتخابگر تاریخ شمسی
در تصویر زیر انتخابگر تاریخ شمسی در یک داشبورد واقعی کنار سایر ویژوالها قرار گرفته است. برای امتحان کردن همه حالتها، نسخه زنده داشبورد را باز کنید.

مشاهده و امتحان داشبورد زنده با انتخابگر تاریخ شمسی
کاربردهای انتخابگر تاریخ شمسی
- داشبوردهای مالی، فروش، منابع انسانی، تولید و عملیات با مخاطب فارسیزبان
- گزارشهایی که داده اصلی آنها از ERP یا پایگاه داده بهصورت میلادی ذخیره شده ولی کاربر باید شمسی انتخاب کند
- فیلتر روز خاص، بازه قرارداد، دوره گزارشگیری ماهانه و فصلی، یا مقایسه قبل و بعد از یک رویداد
- مقایسه عملکرد «از ابتدای سال تا امروز» با «از ابتدای پارسال تا چنین روزی»
- گزارشهایی که باید تعطیلات رسمی یا مناسبتهای سازمانی را روی تقویم نشان دهند
- مدلهای ستارهای با یک جدول تاریخ مشترک و چند جدول Fact
مزایای انتخابگر تاریخ شمسی
- کاربر با تقویم شمسی کار میکند ولی مدل داده استاندارد و میلادی باقی میماند.
- پنج روش انتخاب تاریخ در یک ویژوال؛ بهجای چند اسلایسر و دکمه و Bookmark.
- بازهها شامل کل روز پایاناند و برای ستونهایی که ساعت هم دارند، روز آخر از دست نمیرود.
- دورههای آماده کاملاً شمسیاند؛ «ماه جاری» یعنی ماه شمسی، نه ماه میلادی.
- تعطیلات، مناسبتها، Theme، فونت، رنگ و اندازه واکنشگرا پشتیبانی میشوند.
- فیلتر با جابهجایی بین تبها پاک نمیشود و آخرین فیلتر اعمالشده همیشه بالای ویژوال دیده میشود.
- هیچ مجوز دسترسی خارجی (اینترنت یا سرویس بیرونی) درخواست نمیکند و تبدیل تاریخ داخل خود ویژوال انجام میشود.
محدودیتها و نکاتی که باید بدانید
برای انتخاب درست، محدودیتهای این نسخه (۱.۷.۴) را هم بدانید:
- یک ستون تاریخ: ویژوال فقط یک ستون تاریخ را فیلتر میکند. اگر مدل چند تاریخ دارد (مثل تاریخ سفارش و تاریخ ارسال)، از جدول تاریخ مشترک و رابطه فعال مناسب استفاده کنید.
- ستون اصلی باید Date میلادی باشد: ستون متنی شمسی را نمیتوان در بخش «تاریخ میلادی» قرار داد.
- انتخاب ساعت پشتیبانی نمیشود: واحد انتخاب روز است. اگر ستون شما DateTime است، یک ستون Date جداگانه بسازید و رابطه را روی آن برقرار کنید.
- SELECTEDVALUE در بازه چندروزه خالی است: همانطور که بالاتر گفته شد، از
MINوMAXاستفاده کنید. - یک مناسبت برای هر روز: چند مناسبت یک روز را پیش از ورود به ویژوال در یک متن ترکیب کنید.
- فونت سفارشی: فونت فقط وقتی نمایش داده میشود که روی سیستم یا مرورگر بیننده در دسترس باشد؛ یک زنجیره جایگزین مثل
Vazirmatn, Tahoma, Segoe UIوارد کنید. - هماهنگی با فیلترهای خارجی بر اساس اولین و آخرین تاریخ قابلمشاهده کار میکند و ممکن است همه فیلترهای پیچیده را دقیقاً بازسازی نکند.
- Power BI Report Server: پشتیبانی به نسخه PBIRS و سیاست سازمان درباره ویژوالهای سفارشی بستگی دارد؛ پیش از استقرار، روی همان نسخه آزمایش کنید.
رفع اشکالهای رایج
انتخاب تاریخ روی سایر ویژوالها اثر ندارد
- از منوی Format گزینه Edit interactions را بررسی کنید.
- مطمئن شوید خود ستون Date و نه Date Hierarchy در ویژوال قرار دارد و نوع داده آن Date است.
- رابطه فعال و جهت انتشار فیلتر بین جدول تاریخ و Fact را بررسی کنید.
Measure با SELECTEDVALUE خالی است
در حالتهای بازه، نسبی و دوره زمانی این رفتار طبیعی است. اگر حتی در حالت تکتاریخ هم خالی است، رابطهها و ستونی را که در Measure استفاده کردهاید بررسی کنید.
روزهای تعطیل رنگی نمیشوند
- ستون را در بخش Holiday قرار دادهاید، نه Events.
- قالب مقادیر با یکی از قالبهای گفتهشده مطابقت دارد.
- در حالت علامتگذاری (true/1)، ستون تعطیلی در همان جدول تاریخ و همردیف با تاریخ است.
وضعیت ویژوال بعد از Bookmark تغییر میکند
اگر گزینه Data در Bookmark فعال باشد، Bookmark فیلتر ذخیرهشده خودش را بازمیگرداند. تنظیمات Data و Display همان Bookmark را مطابق نیاز تغییر دهید.
سایر ویژوالهای فارسی Power BI
انتخابگر تاریخ شمسی کنار سه ویژوال دیگر برای رفع مشکلات رایج گزارشهای فارسی ارائه شده است:
- اسلایسر راست به چپ: اسلایسر راستچین با کلیدهای انتخاب در سمت راست
- ویژوال نقشه SVG: نمایش نقشههای دلخواه با رنگبندی بر اساس داده
- گانت چارت شمسی کنترل پروژه: گانت چارت راست به چپ با WBS، مسیر بحرانی و برنامه پایه
پرسشهای متداول
آیا برای استفاده از انتخابگر تاریخ شمسی به ستون تاریخ شمسی در مدل نیاز دارم؟
خیر. ویژوال ستون تاریخ میلادی را دریافت میکند، آن را بهصورت شمسی نمایش میدهد و فیلتر را روی همان ستون میلادی اعمال میکند. ستون شمسی فقط برای نمایش متن تاریخ در سایر ویژوالها یا Cardها کاربرد دارد.
آیا این ویژوال در Power BI Service هم کار میکند؟
بله. ویژوال بهصورت فایل PBIVIZ در گزارش وارد میشود و همراه گزارش در Power BI Service منتشر میشود. فقط سیاست سازمان شما باید استفاده از ویژوالهای سفارشی را مجاز بداند.
آیا دورههایی مثل «ماه جاری» و «سال جاری» شمسی محاسبه میشوند؟
بله. همه ۱۳ دوره زمانی آماده بر اساس تقویم شمسی و تاریخ امروز سیستم بیننده محاسبه میشوند و هفته از شنبه شروع میشود.
آیا روز شروع و پایان بازه در نتیجه فیلتر قرار میگیرند؟
بله. در حالتهای «بازه تاریخ» و «از … تا …» هر دو روز ابتدا و انتها داخل نتیجهاند. فقط در حالت نسبی («قبل از» و «بعد از») خود روز مبنا در نتیجه نیست.
چرا SELECTEDVALUE هنگام انتخاب بازه مقدار خالی برمیگرداند؟
چون در بازه چندروزه بیش از یک تاریخ در فیلتر وجود دارد و SELECTEDVALUE فقط وقتی مقدار برمیگرداند که دقیقاً یک مقدار باشد. برای بازهها از MIN و MAX استفاده کنید.
چطور تعطیلات رسمی را روی تقویم نشان دهم؟
یک ستون تعطیلی (تاریخ شمسی، تاریخ میلادی یا علامت true/1) در جدول تاریخ بسازید و آن را در بخش Holiday ویژوال قرار دهید. جمعه بهصورت پیشفرض و پنجشنبه به انتخاب شما تعطیل در نظر گرفته میشود.
آیا امکان انتخاب ساعت وجود دارد؟
خیر. واحد انتخاب روز است. اگر ستون شما DateTime است، یک ستون Date جداگانه بسازید و ویژوال را روی آن قرار دهید.
تاریخ شمسی را به گزارشهای Power BI خود بیاورید
انتخابگر تاریخ شمسی، اسلایسر راست به چپ، نقشه SVG و گانت چارت شمسی را در صفحه محصول ببینید.
طراحی و توسعه: پوریا بغدادی، گروه تحلیلگری. مطالب این صفحه بر اساس نسخه ۱.۷.۴ ویژوال نوشته شده است.
درباره پوریا بغدادی
یادگیری و آموزش برای من فراتر از یک حرفه است. بدون ترس از این مسیر لذت می برم. بقیهاش مهم نیست. 💛
نوشته های بیشتر از پوریا بغدادیمطالب زیر را حتما بخوانید
-
چهارمین مسابقه بزرگ Power BI ایران (طراحی رزومه)
1.39k بازدید
-
تبدیل فایل صورت وضعیت پرتفوی سهام نماد “وسپه” به Power BI
2.33k بازدید
-
نمونه کار پاوربیآی Power BI در زمینه مدیریت مصرف انرژی
884 بازدید
-
نمونه کار تحلیل داده در Power BI با موضوع اقتصاد ایران و جهان، آقای احسان جعفری
831 بازدید
-
نمونه کار پاور بی آی با موضوع اقتصاد ایران و جهان، آقای محمدرضا سلیمی
694 بازدید
-
نمونه پروژه Power BI اقتصاد ایران و جهان، آقای هادی علوی
584 بازدید