محاسبه مقادیر تجمعی با تاریخ شمسی در Power BI
در این مطلب قصد داریم با نحوه محاسبه مقادیر تجمعی با تاریخ شمسی در Power BI آشنا شویم. محاسبه مقادیر تجمعی در Power BI یکی از رایج ترین سوالات کاربران این حوزه است. برای محاسبه مقادیر تجمعی نیز کاری جز استفاده از خواص توابع موجود در زبان DAX نمی کنیم. در این ویدئوی آموزشی با ترکیب توابع شگفت انگیز CALCULATE و FILTER مقادیر تجمعی در راستای تاریخ شمسی محاسبه شده است.
بیایید با هم به پیاده سازی این مساله بپردازیم. آموزش ویدئویی محاسبه مقادیر تجمعی با تاریخ شمسی در power BI در انتهای مطلب نیز قابل مشاهده است.
برای پیاده سازی ابتدا یک ویژوال از نوع جدول ایجاد می کنیم و تاریخ های شمسی خود را در آن قرار می دهیم. برای مژر نیز از عدد فروش (Qty) استفاده می کنیم. همان طور که در تصویر مشاهده می کنید میزان فروش هر تاریخ روبروی آن درج شده است.
حال می خواهیم مقدار تجمعی را حساب کنیم. برای محاسبه مقدار تجمعی باید هر سطح را با سطوح قبل خودش جمع کنیم. به طور مثال برای محاسبه مقدار تجمعی در تاریخ 1398/05/15 باید مقدار فروش در همین سطح (عدد 6) را با اعداد فروش در تاریخ های قبلی یعنی اعداد 1، 2، 5 جمع کنیم، که در نهایت به عدد 14 خواهیم رسید.
ابتدا با استفاده از تابع CALCULATE و FILTER باید جدول تاریخ خود را به تاریخ های کوچکتر و مساوی تاریخ در هر ردیف از جدول محدود کنیم. به طور مثال برای محاسبه مقدار تجمعی در تاریخ 1398/05/15 باید جدول DimDate را به تاریخ های کوچکتر و مساوی این تاریخ محدود کنیم.
اگر بخواهیم همین کار را با زبان DAX انجام دهیم به طریق زیر عمل می کنیم.
با استفاده از تابع FILTER که در دل تابع CALCULATE به کار گرفته شده است گفته شده که در هر سطح از جدول، تاریخ را بردار به جدول DimDate برو و تاریخ های کوچکتر از آن تاریخ را فیلتر کن. حال نتیجه را با هم مشاهده کنیم.
همان طور که می بینید اعداد یکسان نمایش داده می شوند. چرا؟ چون وقتی ما در یک سطح از جدول هستیم (به طور مثال 1398/05/20) تنها همان یک تاریخ در Filter Context قرار دارد و تاریخ های کوچکتر و مساوی این تاریخ فقط 1398/05/20 خواهد بود. طبیعیست که فقط تعداد فروش در همین یک تاریخ نمایش داده می شود.
برای رفع این مشکل باید دست به دامن تابع ALL شویم و نگذاریم Filter Context محدود به یک تاریخ شود. در تصویر مشاهده می کنید که تنها با اضافه کردن ALL به نتیجه مطلوب خود خواهیم رسید.
با اضافه کردن ALL به کد خود کل جدول تاریخ را در Filter Context خواهیم داشت، سپس شرط ما یعنی فیلتر کردن تاریخ های کوچکتر و مساوی تاریخ جاری اعمال می شود. حتما و حتما مطلب انواع Context در زبان DAX را مطالعه نمایید.
بیایید همین فرمول را در Area Chart نیز مورد بررسی قرار دهیم. مقادیر آبی رنگ فروش در هر تاریخ و مقادیر بنفش رنگ مقادیر تجمعی در هر سطح هستند.
همچنین مطالعه کنید:
پس این ویدئو را تماشا کنید و نظرات خود را با ما در میان بگذارید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
سلام جناب وثوقی
لطفا در مورد انواع میانگین ها (میانگین متحرک -میانگین متحرک وزنی -میانگین ساده ) در تاریخ شمسی هم اموزش بذارید
سلام …
سعی می کنیم در برنامه بذاریمش حتما
سپاس فراوان از اموزش های عالی و جذاب شما
سلام
ممنون از همراهیتون
مهندس ممنون
من امروز فقط دنبال این موضوع بودم چقدر خوب شد
خیلی مورد نیاز هستش👌👌👌👌
سلام
ممنون از لطفتون
من هم بعد از هر مطلب دنبال نظرات انرژی بخش شما هستم جناب سجادیان عزیز …
سلام؛ شبتون بخیر باشه
در همین مثال اگر بخوایم Hierarchy تاریخ شمسی رو تو جدول نمایش بدیم، در سطح سال و ماه شمسی داده تجمعی درست محاسبه نمیشه
ممنون میشم راهنمایی بفرمایید
سلام مجدد، مشکل حل شد
ممنونم از آموزش هاتون
بی نظیری آقای وثوقی.سلیس ، روان و ساده بیان میکنی موضوع رو
سلام … ممنون از لطف و محبت شما
سلام خدمت استادان عزیز
مثل همیشه عالی بود
سلام
ممنون از همراهی شما
فقط میتونم تشکر کنم آقای وثوقی
سلام
ممنون از همراهی شما
سلام
یه سوال
تو دیم تاریخ ، تاریخ شمسی فرمتش باید تاریخ باشه تا میژر بزگتر و مساوی عمل کنه وگرنه عمل نخواهد کرد. درسته؟
نه درست نیست، اگر از ستون jalali_1 استفاده کنید مقایسه و مرتب سازی بطور کامل قابل انجام است.