Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Hello,
Inspired from Gustaw Dudeks custom interval chart
(Goodly video (176) Make this Creative & Insightful Line Chart in Power BI 📈 - YouTube)
I have a dataset which has only four months of data and would like to use weekly interval instead of monthly.
The DAX uses EOMONTH function for setting the correct points.
As there is no direct function for EOWEEK, what alternatives could there be to convert the below DAX to weekly?
Monthly Interval Points =
var vCurrentMonth = EOMONTH(MAX(DimIntervalCalendar[Date]), 0)
var vInterval = [Interval Range]
var vIntervalLenght = DATESBETWEEN(DimIntervalCalendar[Date], EOMONTH(vCurrentMonth, - vInterval) +1, vCurrentMonth)
var vIntegratedCalendars = CALCULATETABLE(DimCalendar, TREATAS(vIntervalLenght, DimCalendar[Date]))
var vTop = DATESBETWEEN(DimCalendar[Date], EOMONTH(vCurrentMonth, - vInterval) + 1, EOMONTH(EOMONTH(vCurrentMonth, - vInterval) + 1, 0))
var vBottom = DATESBETWEEN(DimCalendar[Date], EOMONTH(vCurrentMonth, - 1) + 1, vCurrentMonth)
var vIntegrate = UNION(vTop, vBottom)
var vMaxExpression = CALCULATE(MAXX(ALLSELECTED(DimCalendar[MMM]), [Expression Stage]), vIntegratedCalendars)
var vTotalExpression = CALCULATE([Expression Stage], vIntegrate, KEEPFILTERS(DimCalendar))
return
IF(vTotalExpression, vMaxExpression * 1.3)
Solved! Go to Solution.
Was able to convert the Line chart to use weeks instead of months with the following DAX:
Interval Weekly Points =
VAR _MaxWeek =
MAX(DimIntervalCalendar[EndofWeek])
VAR _MaxMonth =
EOMONTH(MAX(DimIntervalCalendar[Date]), 0)
VAR _Interval =
[Interval Range]
VAR _Calendar =
DATESBETWEEN(DimIntervalCalendar[Date], _MaxWeek - (_Interval * 7) + 1, _MaxWeek)
VAR _JoinedCalendar =
CALCULATETABLE(DimCalendar, TREATAS(_Calendar, DimCalendar[Date]))
VAR _Top =
DATESBETWEEN(DimCalendar[Date], _MaxWeek - (_Interval * 7) + 1, _MaxWeek -(_Interval * 7) + 7)
VAR _Bottom =
DATESBETWEEN(DimCalendar[Date], _MaxWeek - (1 * 7) + 1, _MaxWeek)
VAR _Joined =
UNION(_Top, _Bottom)
VAR _MaxExpression =
CALCULATE(MAXX(ALLSELECTED(DimCalendar[WeekofYear]), [Expression]), _JoinedCalendar)
VAR _TotalExpression =
CALCULATE([Expression], _Joined, KEEPFILTERS(DimCalendar))
RETURN
IF(_TotalExpression, _MaxExpression * 1.3)
The interval can stay the same:
Interval Range =
GENERATESERIES(1 , 20, 1)
but month-year slicer has to be replaced with week.
DimIntervalCalendar =
var vCal = CALENDAR(MIN(Railway[DateofPurchase]), MAX(Railway[DateofJourney]))
var vTable =
ADDCOLUMNS(
vCal,
"Sort", YEAR([Date]) & UNICHAR(MONTH([Date]) + 64),
"Year Month", FORMAT([Date], "mmm-yy"),
"Year", FORMAT([Date], "yyyy"),
"Month", FORMAT([Date], "mmm"),
"Month Week", FORMAT([Date], "ww-mmm"),
"Week", FORMAT([Date], "ww"))
return
vTable
Was able to convert the Line chart to use weeks instead of months with the following DAX:
Interval Weekly Points =
VAR _MaxWeek =
MAX(DimIntervalCalendar[EndofWeek])
VAR _MaxMonth =
EOMONTH(MAX(DimIntervalCalendar[Date]), 0)
VAR _Interval =
[Interval Range]
VAR _Calendar =
DATESBETWEEN(DimIntervalCalendar[Date], _MaxWeek - (_Interval * 7) + 1, _MaxWeek)
VAR _JoinedCalendar =
CALCULATETABLE(DimCalendar, TREATAS(_Calendar, DimCalendar[Date]))
VAR _Top =
DATESBETWEEN(DimCalendar[Date], _MaxWeek - (_Interval * 7) + 1, _MaxWeek -(_Interval * 7) + 7)
VAR _Bottom =
DATESBETWEEN(DimCalendar[Date], _MaxWeek - (1 * 7) + 1, _MaxWeek)
VAR _Joined =
UNION(_Top, _Bottom)
VAR _MaxExpression =
CALCULATE(MAXX(ALLSELECTED(DimCalendar[WeekofYear]), [Expression]), _JoinedCalendar)
VAR _TotalExpression =
CALCULATE([Expression], _Joined, KEEPFILTERS(DimCalendar))
RETURN
IF(_TotalExpression, _MaxExpression * 1.3)
The interval can stay the same:
Interval Range =
GENERATESERIES(1 , 20, 1)
but month-year slicer has to be replaced with week.
DimIntervalCalendar =
var vCal = CALENDAR(MIN(Railway[DateofPurchase]), MAX(Railway[DateofJourney]))
var vTable =
ADDCOLUMNS(
vCal,
"Sort", YEAR([Date]) & UNICHAR(MONTH([Date]) + 64),
"Year Month", FORMAT([Date], "mmm-yy"),
"Year", FORMAT([Date], "yyyy"),
"Month", FORMAT([Date], "mmm"),
"Month Week", FORMAT([Date], "ww-mmm"),
"Week", FORMAT([Date], "ww"))
return
vTable
Weeks and months are incompatible. Make sure your users understand the difference.
User | Count |
---|---|
16 | |
13 | |
12 | |
11 | |
11 |
User | Count |
---|---|
19 | |
14 | |
14 | |
11 | |
9 |