Forecast, DAX, Time Intelligence, Power BI, Rolling Average, YoY Growth, Linear Forecast, پیش‌بینی فروش, KPI, تحلیل داده

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

مقدمات Forecast در Power BI

Forecasting به معنای پیش‌بینی مقادیر آینده بر اساس داده‌های گذشته است.
Power BI از چند روش برای Forecast پشتیبانی می‌کند:

  1. Forecast داخلی Visual (نمودار خطی)
  2. محاسبات DAX و Time Intelligence
  3. مدل‌های پیشرفته با R یا Python

این مقاله تمرکز روی روش دوم یعنی Forecast با DAX و Time Intelligence دارد.

پیش‌نیازها

  1. جدول تاریخ کامل (Date Table)
    • ستون‌های Date ،Year ،Month ،Quarter
    • Mark as Date Table
  2. ستون مقادیر تاریخی (Fact Table)
    • SalesAmount ،Quantity یا KPI مورد نظر
  3. ارتباط یک‌به‌چند بین جدول تاریخ و جدول 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 یک مدل خطی ساده ایجاد کرد:

  1. تعیین تعداد روزها یا ماه‌ها از ابتدا
DayNumber :=
DATEDIFF(MIN('DateTable'[Date]), 'DateTable'[Date], DAY)
  1. محاسبه شیب رشد خطی و پیش‌بینی:
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پیش‌بینی ماهانهمتوسطخوب

نکات حرفه‌ای

  1. همیشه جدول تاریخ کامل داشته باشید.
  2. Mark as Date Table فراموش نشود.
  3. از Rolling Average برای کاهش نویز استفاده کنید.
  4. ترکیب YoY Growth و Linear Forecast به پیش‌بینی دقیق‌تر کمک می‌کند.
  5. برای داده‌های فصلی، استفاده از TOTALQTD/TOTALYTD همراه با Growth مناسب است.
  6. تست مدل در چند ماه گذشته قبل از پیش‌بینی آینده ضروری است.

سناریوهای عملی

۱: پیش‌بینی فروش ماه آینده
  • محاسبه رشد ماهانه متوسط
  • اعمال درصد رشد برای ماه بعد
۲: پیش‌بینی فروش سال بعد
  • محاسبه YoY Growth
  • پیش‌بینی فروش کل سال آینده
۳: پیش‌بینی میانگین ۶ ماهه
  • Rolling Average برای کاهش نوسانات
  • کاربرد در نمودارهای خطی و KPI
۴: پیش‌بینی خطی برای محصول خاص
  • شیب رشد خطی محاسبه می‌شود
  • پیش‌بینی فروش ۳ ماه آینده محصول

سوالات متداول (FAQ)

۱. آیا Forecast با DAX دقیق است؟

Forecast با DAX برای پیش‌بینی ساده و متوسط مناسب است. برای مدل‌های پیچیده‌تر، R یا Python بهتر هستند.

۲. آیا می‌توان پیش‌بینی فصلی انجام داد؟

بله، با ترکیب TOTALQTD/TOTALYTD و Rolling Average

۳. چگونه خطای Forecast را کاهش دهیم؟

  • استفاده از میانگین متحرک وزنی
  • تست مدل در داده‌های گذشته
  • ترکیب چند روش پیش‌بینی

۴. آیا جدول تاریخ مهم است؟

بله، بدون جدول تاریخ کامل، توابع Time Intelligence درست کار نمی‌کنند.

پیشنهاد مطالعه
  1. مرجع زبان DAX افزونه کوئری نویسی در اکسل و POWER BI
  2. مرجع زبان فرمول نویسی M در پاور کوئری
  3. طراحی داشبوردهای مدیریتی در Microsoft Power BI

تماس و مشاوره با لاندا

پیش‌بینی هوشمند و تحلیل روند با Power BI

اگر می‌خواهید مدل‌های پیش‌بینی حرفه‌ای، Forecast فروش و KPI پویا بسازید، تیم توسعه فناوری اطلاعات لاندا آماده است:

  • آموزش عملی Time Intelligence و Forecast با DAX
  • طراحی مدل داده حرفه‌ای و پویا
  • مشاوره و پیاده‌سازی پروژه‌های تحلیل داده

همین امروز با ما تماس بگیرید و پروژه پیش‌بینی خود را آغاز کنید!

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *