در تحلیل دادهها، پیشبینی و Forecast یکی از بخشهای حیاتی برای تصمیمگیری کسبوکارهاست. Power BI با ترکیب توابع DAX و قابلیتهای Time Intelligence، امکان ساخت مدلهای پیشبینی ساده و متوسط را فراهم میکند. این مقاله نحوه ایجاد Forecast و محاسبات پیشبینی با استفاده از DAX ،Time Intelligence و جدول تاریخ را به صورت عملی و گامبهگام توضیح میدهد.
مقدمات Forecast در Power BI
Forecasting به معنای پیشبینی مقادیر آینده بر اساس دادههای گذشته است.
Power BI از چند روش برای Forecast پشتیبانی میکند:
- Forecast داخلی Visual (نمودار خطی)
- محاسبات DAX و Time Intelligence
- مدلهای پیشرفته با R یا Python
این مقاله تمرکز روی روش دوم یعنی Forecast با DAX و Time Intelligence دارد.
پیشنیازها
- جدول تاریخ کامل (Date Table)
- ستونهای Date ،Year ،Month ،Quarter
- Mark as Date Table
- ستون مقادیر تاریخی (Fact Table)
- SalesAmount ،Quantity یا KPI مورد نظر
- ارتباط یکبهچند بین جدول تاریخ و جدول Fact
روشهای Forecast با DAX
میانگین متحرک (Rolling Average)
یکی از سادهترین روشهای پیشبینی، استفاده از میانگین متحرک است.
مثال ۳ ماهه
SalesRolling3Months :=
CALCULATE(
AVERAGEX(
DATESINPERIOD(
'DateTable'[Date],
MAX('DateTable'[Date]),
-۳,
MONTH
),
SUM(Sales[SalesAmount])
)
)
- میانگین فروش ۳ ماه گذشته محاسبه میشود.
- میتوان آن را برای پیشبینی ماه آینده ادامه داد.
میانگین متحرک وزنی (Weighted Moving Average)
برای پیشبینی دقیقتر، میتوان به دادههای اخیر وزن بیشتری داد:
SalesWeighted :=
(
SUMX(
LASTN(3, 'DateTable'[Date]),
SUM(Sales[SalesAmount]) * {0.5, 0.3, 0.2}
)
)
- ماه آخر وزن بیشتری دارد
- ماههای قدیمیتر وزن کمتری دارند
پیشبینی رشد سالانه (YoY Growth)
با استفاده از SAMEPERIODLASTYEAR و محاسبه رشد سالانه، میتوان پیشبینی کرد:
YoYGrowth :=
DIVIDE(
SUM(Sales[SalesAmount]) - CALCULATE(SUM(Sales[SalesAmount]), SAMEPERIODLASTYEAR('DateTable'[Date])),
CALCULATE(SUM(Sales[SalesAmount]), SAMEPERIODLASTYEAR('DateTable'[Date]))
)
- درصد رشد نسبت به سال قبل
- با روند رشد، میتوان مقدار آینده را پیشبینی کرد:
SalesForecastNextYear :=
SUM(Sales[SalesAmount]) * (1 + [YoYGrowth])
پیشبینی خطی (Linear Forecast)
میتوان با ترکیب ROW Context و Time Intelligence یک مدل خطی ساده ایجاد کرد:
- تعیین تعداد روزها یا ماهها از ابتدا
DayNumber :=
DATEDIFF(MIN('DateTable'[Date]), 'DateTable'[Date], DAY)
- محاسبه شیب رشد خطی و پیشبینی:
Slope :=
(SUM(Sales[SalesAmount]) - CALCULATE(SUM(Sales[SalesAmount]), DATEADD('DateTable'[Date], -1, YEAR))) /
DATEDIFF(MIN('DateTable'[Date]), MAX('DateTable'[Date]), DAY)
SalesForecastLinear :=
SUM(Sales[SalesAmount]) + ([Slope] * [DayNumberFuture])
[DayNumberFuture]تعداد روزهای آینده که میخواهیم پیشبینی کنیم.- این روش یک پیشبینی خطی ساده ارائه میدهد.
پیشبینی با درصد رشد ماهانه (Monthly Growth Rate)
اگر دادههای ماهانه داشته باشیم، میتوان رشد ماهانه متوسط را محاسبه و برای ماه آینده اعمال کرد:
MonthlyGrowthRate :=
AVERAGEX(
DATESINPERIOD('DateTable'[Date], MAX('DateTable'[Date]), -12, MONTH),
DIVIDE(
SUM(Sales[SalesAmount]) - CALCULATE(SUM(Sales[SalesAmount]), DATEADD('DateTable'[Date], -1, MONTH)),
CALCULATE(SUM(Sales[SalesAmount]), DATEADD('DateTable'[Date], -1, MONTH))
)
)
ForecastNextMonth :=
SUM(Sales[SalesAmount]) * (1 + [MonthlyGrowthRate])
جدول مقایسه روشهای Forecast با DAX
| روش Forecast | ابزار DAX | کاربرد | پیچیدگی | دقت |
|---|---|---|---|---|
| میانگین متحرک (Rolling Average) | DATESINPERIOD + AVERAGEX | کاهش نوسانات، پیشبینی ساده | کم | متوسط |
| میانگین متحرک وزنی | DATESINPERIOD + SUMX | وزندهی به دادههای اخیر | متوسط | خوب |
| رشد سالانه (YoY Growth) | SAMEPERIODLASTYEAR + CALCULATE | پیشبینی سال آینده | متوسط | خوب |
| پیشبینی خطی | DATEDIFF + CALCULATE + ROW Context | مدل خطی ساده | زیاد | متوسط |
| رشد ماهانه | DATEADD + AVERAGEX | پیشبینی ماهانه | متوسط | خوب |
نکات حرفهای
- همیشه جدول تاریخ کامل داشته باشید.
- Mark as Date Table فراموش نشود.
- از Rolling Average برای کاهش نویز استفاده کنید.
- ترکیب YoY Growth و Linear Forecast به پیشبینی دقیقتر کمک میکند.
- برای دادههای فصلی، استفاده از TOTALQTD/TOTALYTD همراه با Growth مناسب است.
- تست مدل در چند ماه گذشته قبل از پیشبینی آینده ضروری است.
سناریوهای عملی
۱: پیشبینی فروش ماه آینده
- محاسبه رشد ماهانه متوسط
- اعمال درصد رشد برای ماه بعد
۲: پیشبینی فروش سال بعد
- محاسبه YoY Growth
- پیشبینی فروش کل سال آینده
۳: پیشبینی میانگین ۶ ماهه
- Rolling Average برای کاهش نوسانات
- کاربرد در نمودارهای خطی و KPI
۴: پیشبینی خطی برای محصول خاص
- شیب رشد خطی محاسبه میشود
- پیشبینی فروش ۳ ماه آینده محصول
سوالات متداول (FAQ)
۱. آیا Forecast با DAX دقیق است؟
Forecast با DAX برای پیشبینی ساده و متوسط مناسب است. برای مدلهای پیچیدهتر، R یا Python بهتر هستند.
۲. آیا میتوان پیشبینی فصلی انجام داد؟
بله، با ترکیب TOTALQTD/TOTALYTD و Rolling Average
۳. چگونه خطای Forecast را کاهش دهیم؟
- استفاده از میانگین متحرک وزنی
- تست مدل در دادههای گذشته
- ترکیب چند روش پیشبینی
۴. آیا جدول تاریخ مهم است؟
بله، بدون جدول تاریخ کامل، توابع Time Intelligence درست کار نمیکنند.
پیشنهاد مطالعه
- مرجع زبان DAX افزونه کوئری نویسی در اکسل و POWER BI
- مرجع زبان فرمول نویسی M در پاور کوئری
- طراحی داشبوردهای مدیریتی در Microsoft Power BI
تماس و مشاوره با لاندا
پیشبینی هوشمند و تحلیل روند با Power BI
اگر میخواهید مدلهای پیشبینی حرفهای، Forecast فروش و KPI پویا بسازید، تیم توسعه فناوری اطلاعات لاندا آماده است:

و سپس «افزودن به صفحه اصلی» ضربه بزنید
و سپس «افزودن به صفحه اصلی» ضربه بزنید

نظری داده نشده