# 13.16 Time intelligence

Source: https://ravindrabagale.com/mr/powerbi/ch13-dax-data-analysis-expressions/13-16-time-intelligence.html
Language: mr (Marathi with English technical terms)

वेगवेगळ्या periods ची तुलना म्हणजे time intelligence. या classic date-column examples साठी continuous marked Date table, date-only relationship आणि functions मध्ये 'Date'[Date] वापरा.

YTD, QTD, MTD आणि मागचे periods

YTD वर्षाच्या सुरुवातीपासून current date पर्यंत; QTD quarter आणि MTD month पासून. FYTD April–March साठी year-end argument आहे; त्याच्या text-date interpretation ला locale लागू शकतो.

Sales YTD = TOTALYTD([Total Sales], 'Date'[Date])

-- Same result using CALCULATE + DATESYTD
Sales YTD v2 = CALCULATE([Total Sales], DATESYTD('Date'[Date]))

-- Indian financial year (April–March): year ends on 31 March
Sales FYTD = TOTALYTD([Total Sales], 'Date'[Date], "3/31")

Orders QTD = TOTALQTD([Total Orders], 'Date'[Date])
Orders MTD = TOTALMTD([Total Orders], 'Date'[Date])

Sales LY = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))

Sales LY (DATEADD) = CALCULATE([Total Sales], DATEADD('Date'[Date], -1, YEAR))

Orders Previous Month = CALCULATE([Total Orders], DATEADD('Date'[Date], -1, MONTH))

Orders Previous Week = CALCULATE([Total Orders], DATEADD('Date'[Date], -7, DAY))

-- Full previous year, regardless of which month is selected
Sales Full Prev Year = CALCULATE([Total Sales], PARALLELPERIOD('Date'[Date], -1, YEAR))

Sales LY YTD = CALCULATE([Sales YTD], SAMEPERIODLASTYEAR('Date'[Date]))

Festival Orders = CALCULATE([Total Orders], 'Date'[Is Festival Day] = TRUE())

-- Use in a visual or card filtered to one Year
Diwali Orders LY =
VAR PrevYear = MAX('Date'[Year]) - 1
RETURN
    CALCULATE(
        [Total Orders],
        'Date'[Festival] = "Diwali",
        'Date'[Year] = PrevYear
    )

YoY Growth % =
VAR CurrentSales = [Total Sales]
VAR PreviousSales = [Sales LY]
RETURN
    IF(
        NOT ISBLANK(CurrentSales) && NOT ISBLANK(PreviousSales),
        DIVIDE(CurrentSales - PreviousSales, PreviousSales)
    )

MoM Orders Growth % =
DIVIDE([Total Orders] - [Orders Previous Month], [Orders Previous Month])

Running Total Orders =
CALCULATE(
    [Total Orders],
    FILTER(
        ALL('Date'[Date]),
        'Date'[Date] <= MAX('Date'[Date])
    )
)

-- Average of the last 3 months' sales (monthly level visual)
Sales 3M Moving Avg =
VAR Period =
    DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -3, MONTH)
RETURN
    CALCULATE(
        AVERAGEX(VALUES('Date'[Year Month]), [Total Sales]),
        Period
    )

-- 7-day moving average of daily orders (daily level visual)
Orders 7D Moving Avg =
CALCULATE(
    AVERAGEX(VALUES('Date'[Date]), [Total Orders]),
    DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -7, DAY)
)

 | Function | March 2025 निवडल्यावर

 | SAMEPERIODLASTYEAR | March 2024

 | DATEADD −1 YEAR | त्याच dates, एक वर्ष मागे

 | DATEADD −1 MONTH | February 2025

 | PARALLELPERIOD −1 YEAR | संपूर्ण Jan–Dec 2024

 | DATESYTD | 1 Jan–31 Mar 2025

वरचे code blocks स्वतंत्र measures आहेत. एकेक तयार करा. TOTALYTD मधलं "3/31" हे 31 March दर्शवणारं example; तुमच्या model locale मध्ये स्वीकारलं जातं आणि 31 March / 1 April boundary योग्य आहे का तपासा.

Festival तुलना

Diwali आणि Ganeshotsav त्याच calendar date ला नसतात. SAMEPERIODLASTYEAR समान dates shift करतो; समान festival period नाही. Chapter 11.5 मधल्या maintained Festival mapping वर comparison करा.

Diwali Orders LY example निवडलेल्या Year वर योग्य असू शकतो; current Month / Date filters उरले तर मागच्या festival शी intersection रिकामं होऊ शकतं. तुलना पूर्ण previous festival साठी असेल तर आवश्यक calendar filters स्पष्ट remove करून PrevYear व Festival पुन्हा लागू करा.

Growth

YoY = (current − previous)/previous. Previous zero / blank असल्यास DIVIDE result आणि business display ठरवा. Missing period ला खोटा 0 growth देऊ नका.

Running total

Current axis date पर्यंतची बेरीज / distinct orders. YTD हा दर वर्षी reset होणारा cumulative calculation. दिलेल्या ALL(Date[Date]) example मध्ये इतर Date columns चे filters राहू शकतात; खरोखर full-history total हवा तर model आणि filter scope तपासा.

Moving average

DATESINPERIOD current anchor पासून मागे किंवा पुढे continuous dates देतो. 3M example monthly visual साठी, 7D daily visual साठी आहे. यामुळे weekly peaksसारखे छोटे चढ-उतार कमी होऊन trend दिसतो.

Partial current month आणि blank sales days average मध्ये कसे धरायचे हे ठरवा. AVERAGEX blanks ignore करतो; no-sales day शून्य मानायचा असेल तर स्पष्ट zero rule लागेल. End-of-month anchor आणि complete periodsवर test करा.

Dates अखंड असल्या पाहिजेत

Orders मध्ये sales नसलेला दिवस missing असू शकतो. म्हणून fact date ऐवजी calendar date वापरा. 31 March, 1 April, year end, leap day आणि no-order दिवसांवर results तपासा.

रवींद्र बागले यांची tip

Time formula लिहिण्याआधी calendar, marking आणि date-only relationship तपासा. FY year-end format localeशी जुळवा; फक्त formula copy करून totals योग्य आहेत असं समजू नका.
