ULTIMATE TIME BASED CALCULATIONS CHEAT SHEET FOR DAX / POWER BI (INCLUDING WEEK BASED CALCULATIONS)

 


ULTIMATE TIME BASED CALCULATIONS CHEAT SHEET FOR DAX / POWER BI (INCLUDING WEEK BASED CALCULATIONS)

 

Power BI provides great time intelligence features to calculate Year-to-date (YTD), Month-to-date (MTD) and Quarter-to-date (QTD) totals. There is no such thing as Week-to-date (WTD) or Period-to-date (PTD) where period could be any arbitrary period definition (I used two-month periods in my example below). If you want those, you will have to create the calculations yourself. I was inspired by this excellent blog post and created an ultimate time-intelligence calculations Power BI file. I used Matt Massons excellent date dimension generation script to generate the date table for my example.

Basic Measures

  • Total Amount:

TotalAmount = SUM(Sales[Amount])

  • Total Quantity:

TotalQuantity = SUM(Sales[Quantity])

Day Measures

  • Total Amount for Last Day (Yesterday)

Amount_LastDay = CALCULATE([TotalAmount],PREVIOUSDAY('Date'[Date]))

  • Total Amount for same Day last Year

Amount_SameDayLastYear = CALCULATE([TotalAmount],SAMEPERIODLASTYEAR('Date'[Date]))

  • Variance of total Amount compared to Total Amount for Last Day

Amount_DOD_Variance = [TotalAmount]-[Amount_LastDay]

  • Variance % of total Amount compared to Total Amount for Last Day

Amount_DOD_Variance% = DIVIDE([Amount_DOD_Variance],[Amount_LastDay])

  • Variance of total Amount compared to Total Amount for same Day last Year

Amount_YOY_Variance = [TotalAmount]-[Amount_SameDayLastYear]

  • Variance % of total Amount compared to Total Amount same Day last Year

Amount_YOY_Variance% = DIVIDE([Amount_YOY_Variance],[Amount_LastDay])

  • Total Quantity for Last Day (Yesterday)

Quantity_LastDay = CALCULATE([TotalQuantity],PREVIOUSDAY('Date'[Date]))

  • Total Quantity for same Day last Year

Quantity_SameDayLastYear = CALCULATE([TotalQuantity],SAMEPERIODLASTYEAR('Date'[Date]))

  • Variance of total Quantity compared to Total Quantity for Last Day

Quantity_DOD_Variance = [TotalQuantity]-[Quantity_LastDay]

  • Variance % of total Quantity compared to Total Quantity for Last Day

Quantity_DOD_Variance% = DIVIDE([Quantity_DOD_Variance],[Quantity_LastDay])

  • Variance of total Quantity compared to total Quantity for same Day last Year

Quantity_YOY_Variance = [TotalQuantity]-[Quantity_SameDayLastYear]

  • Variance % of total Quantity compared to total Quantity for same Day last Year

Quantity_YOY_Variance% = DIVIDE([Quantity_YOY_Variance],[Quantity_LastDay])

Week Measures

  • Total Amount Week To Date

·         Amount_WTD = IF (

·             HASONEVALUE ( 'Date'[Year] )

·                 && HASONEVALUE ('Date'[WeekNumber] ), CALCULATE(

·                 [TotalAmount],

·                 FILTER (

·                     ALL ( 'Date' ),

·                     'Date'[Year] = VALUES ( 'Date'[Year] )

·                         && 'Date'[WeekNumber] = VALUES ( 'Date'[WeekNumber] )

·                         && 'Date'[Date] <= MAX ( 'Date'[Date] )

·                 )

    ))

  • Total Amount for Last Week

·         Amount_LastWeek = SUMX(

·             FILTER(ALL('Date'),

·                 IF(SELECTEDVALUE('Date'[WeekNumber])=1,

·                     'Date'[WeekNumber]=CALCULATE(MAX('Date'[WeekNumber]), ALL('Date')) && 'Date'[Year]=FORMAT(VALUE(SELECTEDVALUE('Date'[Year]))-1,""),

·                     'Date'[WeekNumber]=SELECTEDVALUE('Date'[WeekNumber])-1 && 'Date'[Year]=FORMAT(VALUE(SELECTEDVALUE('Date'[Year])),""))

·             ),

    [TotalAmount])

  • Total Amount for same Week Last Year

·         Amount_SameWeekLastYear = IF (

·             HASONEVALUE ( 'Date'[Year] )

·                 && HASONEVALUE ('Date'[WeekNumber] ), CALCULATE(

·                 SUM ( Sales[Amount] ),

·                 FILTER (

·                     ALL ( 'Date' ),

·                     'Date'[Year] = FORMAT(VALUES ( 'Date'[Year] )-1,"")

·                         && 'Date'[WeekNumber] = VALUES ( 'Date'[WeekNumber] )

·                         && 'Date'[Date] <= MAX ( 'Date'[Date] )

·                 )

    ))

  • Variance of total Amount Week To Date compared to Total Amount for Last Week

Amount_WTD_WOW_Variance = [Amount_WTD]-[Amount_LastWeek]

  • Variance % of total Amount Week To Date compared to Total Amount for Last Week

Amount_WTD_WOW_Variance% = DIVIDE([Amount_WTD_WOW_Variance],[Amount_LastWeek])

  • Variance of total Amount Week to Date compared to Total Amount for same Week last Year

Amount_WTD_YOY_Variance = [Amount_WTD]-[Amount_SameWeekLastYear]

  • Variance % of total Amount Week to Date compared to Total Amount for same Week last Year

Amount_WTD_YOY_Variance% = DIVIDE([Amount_WTD_YOY_Variance],[Amount_SameWeekLastYear])

  • Total Quantity Week To Date

·         Quantity_WTD = IF (

·             HASONEVALUE ( 'Date'[Year] )

·                 && HASONEVALUE ('Date'[WeekNumber] ),

·             CALCULATE (

·                 [TotalQuantity],

·                 FILTER (

·                     ALL ( 'Date' ),

·                     'Date'[Year] = VALUES ( 'Date'[Year] )

·                         && 'Date'[WeekNumber] = VALUES ( 'Date'[WeekNumber] )

·                         && 'Date'[Date] <= MAX ( 'Date'[Date] )

·                 )

·             ),

·             BLANK ()

)

  • Total Quantity for same Week Last Year

·         Quantity_SameWeekLastYear = IF (

·             HASONEVALUE ( 'Date'[Year] )

·                 && HASONEVALUE ('Date'[WeekNumber] ), CALCULATE(

·                 SUM ( Sales[Quantity] ),

·                 FILTER (

·                     ALL ( 'Date' ),

·                     'Date'[Year] = FORMAT(VALUES ( 'Date'[Year] )-1,"")

·                         && 'Date'[WeekNumber] = VALUES ( 'Date'[WeekNumber] )

·                         && 'Date'[Date] <= MAX ( 'Date'[Date] )

·                 )

    ))

  • Total Quantity for Last Week

·         Quantity_LastWeek = SUMX(

·             FILTER(ALL('Date'),

·                 IF(SELECTEDVALUE('Date'[WeekNumber])=1,

·                     'Date'[WeekNumber]=CALCULATE(MAX('Date'[WeekNumber]), ALL('Date')) && 'Date'[Year]=FORMAT(VALUE(SELECTEDVALUE('Date'[Year]))-1,""),

·                     'Date'[WeekNumber]=SELECTEDVALUE('Date'[WeekNumber])-1 && 'Date'[Year]=FORMAT(VALUE(SELECTEDVALUE('Date'[Year])),""))

·             ),

    [TotalQuantity])

  • Variance of total Quantity Week To Date compared to Total Quantity for Last Week

Quantity_WTD_WOW_Variance = [Quantity_WTD]-[Quantity_LastWeek]

  • Variance % of total Quantity Week To Date compared to Total Quantity for Last Week

Quantity_WTD_WOW_Variance% = DIVIDE([Quantity_WTD_WOW_Variance],[Quantity_LastWeek])

  • Variance of total Quantity Week to Date compared to Total Quantity for same Week last Year

Quantity_WTD_YOY_Variance = [Quantity_WTD]-[Quantity_SameWeekLastYear]

  • Variance % of total Quantity Week to Date compared to Total Quantity for same Week last Year

Quantity_WTD_YOY_Variance% = DIVIDE([Quantity_WTD_YOY_Variance],[Quantity_SameWeekLastYear])

Month Measures

  • Total Amount Month To Date

Amount_MTD = TOTALMTD([TotalAmount],'Date'[Date])

  • Total Amount for same Month Last Year

Amount_SameMonthLastYear = CALCULATE([Amount_MTD],SAMEPERIODLASTYEAR('Date'[Date]))

  • Total Amount for Last Month

Amount_LastMonth = CALCULATE([TotalAmount],PREVIOUSMONTH('Date'[Date]))

  • Variance of total Amount Month To Date compared to Total Amount for Last Month

Amount_MTD_MOM_Variance = [Amount_MTD]-[Amount_LastMonth]

  • Variance % of total Amount Month To Date compared to Total Amount for Last Month

Amount_MTD_MOM_Variance% = DIVIDE([Amount_MTD_MOM_Variance],[Amount_LastMonth])

  • Variance of total Amount Month to Date compared to Total Amount for same Month last Year

Amount_MTD_YOY_Variance = [Amount_MTD]-[Amount_SameMonthLastYear]

  • Variance % of total Amount Month to Date compared to Total Amount for same Month last Year

Amount_MTD_YOY_Variance% = DIVIDE([Amount_MTD_YOY_Variance],[Amount_SameMonthLastYear])

  • Total Quantity Month To Date

Quantity_MTD = TOTALMTD([TotalQuantity],'Date'[Date])

  • Total Quantity for same Month Last Year

Quantity_SameMonthLastYear = CALCULATE([Quantity_MTD],SAMEPERIODLASTYEAR('Date'[Date]))

  • Total Quantity for Last Month

Quantity_LastMonth = CALCULATE([TotalQuantity],PREVIOUSMONTH('Date'[Date]))

  • Variance of total Quantity Month To Date compared to Total Quantity for Last Month

Quantity_MTD_MOM_Variance = [Quantity_MTD]-[Quantity_LastMonth]

  • Variance % of total Quantity Month To Date compared to Total Quantity for Last Month

Quantity_MTD_MOM_Variance% = DIVIDE([Quantity_MTD_MOM_Variance],[Quantity_LastMonth])

  • Variance of total Quantity Month to Date compared to Total Quantity for same Month last Year

Quantity_MTD_YOY_Variance = [Quantity_MTD]-[Quantity_SameMonthLastYear]

  • Variance % of total Quantity Month to Date compared to Total Quantity for same Month last Year

Quantity_MTD_YOY_Variance% = DIVIDE([Quantity_MTD_YOY_Variance],[Quantity_SameMonthLastYear])

Period Measures

Total Amount Period To Date
·       Amount_PTD = IF (
·             HASONEVALUE ( 'Date'[Year] )
·                 && HASONEVALUE ('Date'[TwoMonthPeriod] ),
·             CALCULATE (
·                 [TotalAmount],
·                 FILTER (
·                     ALL ( 'Date' ),
·                     'Date'[Year] = VALUES ( 'Date'[Year] )
·                         && 'Date'[TwoMonthPeriod] = VALUES ( 'Date'[TwoMonthPeriod] )
·                         && 'Date'[Date] <= MAX ( 'Date'[Date] )
·                 )
·             ),
·             BLANK ()
)
  • Total Amount for same Period Last Year

Amount_SamePeriodLastYear = CALCULATE([Amount_PTD],SAMEPERIODLASTYEAR('Date'[Date]))

  • Total Amount for Last Period

Amount_LastPeriod = CALCULATE([TotalAmount],DATEADD('Date'[Date],-2,MONTH))

  • Variance of total Amount Period To Date compared to Total Amount for Last Period

Amount_PTD_POP_Variance = [Amount_PTD]-[Amount_LastPeriod]

  • Variance % of total Amount Period To Date compared to Total Amount for Last Period

Amount_PTD_POP_Variance% = DIVIDE([Amount_PTD_POP_Variance],[Amount_LastPeriod])

  • Variance of total Amount Period to Date compared to Total Amount for same Period last Year

Amount_PTD_YOY_Variance = [Amount_PTD]-[Amount_SamePeriodLastYear]

  • Variance % of total Amount Period to Date compared to Total Amount for same Period last Year

Amount_PTD_YOY_Variance% = DIVIDE([Amount_PTD_YOY_Variance],[Amount_SamePeriodLastYear])

  • Total Quantity Period To Date

·         Quantity_PTD = IF (

·             HASONEVALUE ( 'Date'[Year] )

·                 && HASONEVALUE ('Date'[TwoMonthPeriod] ),

·             CALCULATE (

·                 [TotalQuantity],

·                 FILTER (

·                     ALL ( 'Date' ),

·                     'Date'[Year] = VALUES ( 'Date'[Year] )

·                         && 'Date'[TwoMonthPeriod] = VALUES ( 'Date'[TwoMonthPeriod] )

·                         && 'Date'[Date] <= MAX ( 'Date'[Date] )

·                 )

·             ),

·             BLANK ()

)

  • Total Quantity for same Period Last Year

Quantity_SamePeriodLastYear = CALCULATE([Quantity_PTD],SAMEPERIODLASTYEAR('Date'[Date]))

  • Total Quantity for Last Period

Quantity_LastPeriod = CALCULATE([TotalQuantity],DATEADD('Date'[Date],-2,MONTH))

  • Variance of total Quantity Period To Date compared to Total Quantity for Last Period

Quantity_PTD_POP_Variance = [Quantity_PTD]-[Quantity_LastPeriod]

  • Variance % of total Quantity Period To Date compared to Total Quantity for Last Period

Quantity_PTD_POP_Variance% = DIVIDE([Quantity_PTD_POP_Variance],[Quantity_LastPeriod])

  • Variance % of total Quantity Period to Date compared to Total Quantity for same Period last Year

Quantity_PTD_YOY_Variance = [Quantity_PTD]-[Quantity_SamePeriodLastYear]

  • Variance of total Quantity Period to Date compared to Total Quantity for same Period last Year

Quantity_PTD_YOY_Variance% = DIVIDE([Quantity_PTD_YOY_Variance],[Quantity_SamePeriodLastYear])

Quarter Measures

  • Total Amount Quarter To Date

Amount_QTD = TOTALQTD([TotalAmount],'Date'[Date])

  • Total Amount for same Quarter Last Year

Amount_SameQuarterLastYear = CALCULATE([Amount_QTD],SAMEPERIODLASTYEAR('Date'[Date]))

  • Total Amount for Last Quarter

Amount_LastQuarter = CALCULATE([TotalAmount],PREVIOUSQUARTER('Date'[Date]))

  • Variance of total Amount Quarter To Date compared to Total Amount for Last Quarter

Amount_QTD_QOQ_Variance = [Amount_QTD]-[Amount_LastQuarter]

  • Variance % of total Amount Quarter To Date compared to Total Amount for Last Quarter

Amount_QTD_QOQ_Variance% = DIVIDE([Amount_QTD_QOQ_Variance],[Amount_LastQuarter])

  • Variance of total Amount Quarter to Date compared to Total Amount for same Quarter last Year

Amount_QTD_YOY_Variance = [Amount_QTD]-[Amount_SameQuarterLastYear]

  • Variance % of total Amount Quarter to Date compared to Total Amount for same Quarter last Year

Amount_QTD_YOY_Variance% = DIVIDE([Amount_QTD_YOY_Variance],[Amount_SameQuarterLastYear])

  • Total Quantity Quarter To Date

Quantity_QTD = TOTALQTD([TotalQuantity],'Date'[Date])

  • Total Quantity for same Quarter Last Year

Quantity_SameQuarterLastYear = CALCULATE([Quantity_QTD],SAMEPERIODLASTYEAR('Date'[Date]))

  • Total Quantity for Last Quarter

Quantity_LastQuarter = CALCULATE([TotalQuantity],PREVIOUSQUARTER('Date'[Date]))

  • Variance of total Quantity Quarter To Date compared to Total Quantity for Last Quarter

Quantity_QTD_QOQ_Variance = [Quantity_QTD]-[Quantity_LastQuarter]

  • Variance % of total Quantity Quarter To Date compared to Total Quantity for Last Quarter

Quantity_QTD_QOQ_Variance% = DIVIDE([Quantity_QTD_QOQ_Variance],[Quantity_LastQuarter])

  • Variance of total Quantity Quarter To Date compared to Total Quantity or same Quarter last Year

Quantity_QTD_YOY_Variance = [Quantity_QTD]-[Quantity_SameQuarterLastYear]

  • Variance % of total Quantity Quarter To Date compared to Total Quantity for same Quarter last Year

Quantity_QTD_YOY_Variance% = DIVIDE([Quantity_QTD_YOY_Variance],[Quantity_SameQuarterLastYear])

Year Measures

  • Total Amount Year To Date

Amount_YTD = TOTALYTD([TotalAmount],'Date'[Date])

  • Total Amount for Last Year

Amount_LastYear = CALCULATE([Amount_YTD],PREVIOUSYEAR('Date'[Date]))

  • Variance of total Amount Year To Date compared to Total Amount for Last Year

Amount_YTD_YOY_Variance = [Amount_YTD]-[Amount_LastYear]

  • Variance% of total Amount Year To Date compared to Total Amount for Last Year

Amount_YTD_YOY_Variance% = DIVIDE([Amount_YTD_YOY_Variance],[Amount_LastYear])

  • Total Quantity Year To Date

Quantity_YTD = TOTALYTD([TotalQuantity],'Date'[Date])

  • Total Quantity for Last Year

Quantity_LastYear = CALCULATE([TotalQuantity],PREVIOUSYEAR('Date'[Date]))

  • Variance of total Quantity Year To Date compared to Total Quantity for Last Year

Quantity_YTD_YOY_Variance = -[Quantity_YTD]-[Quantity_LastYear]

  • Variance% of total Quantity Year To Date compared to Total Quantity for Last Year

Quantity_YTD_YOY_Variance% = DIVIDE([Quantity_YTD_YOY_Variance],[Quantity_LastYear])

 

Comments

Popular posts from this blog

What is Gini Impurity?

20+ Questions to Test your Skills on Logistic Regression

Artificial Neural Network Interview Questions