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
· 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
Post a Comment