Forum Discussion
Oleander
Helper I
4 years agoCalculate a value from a schedule for a specifi week
HI, I have a schedule like this for between specific dates and I want to show values for a Department for a specific week how do I go about a measure to do that ? I have Calender table with all d...
- 4 years ago
Hi Oleander ,
Please add the following custom function to convert the date to ISO week number.
Referencing: M functions to convert between ISO 8601 Week
let getISO8601Week = (someDate as date) => let getDayOfWeek = (d as date) => let result = 1 + Date.DayOfWeek(d, Day.Monday) in result, getNaiveWeek = (inDate as date) => let // monday = 1, sunday = 7 weekday = getDayOfWeek(inDate), weekdayOfJan4th = getDayOfWeek(#date(Date.Year(inDate), 1, 4)), ordinal = Date.DayOfYear(inDate), naiveWeek = Number.RoundDown( (ordinal - weekday + 10) / 7 ) in naiveWeek, thisYear = Date.Year(someDate), priorYear = thisYear - 1, nwn = getNaiveWeek(someDate), lastWeekOfPriorYear = getNaiveWeek(#date(priorYear, 12, 28)), // http://stackoverflow.com/a/34092382/2014893 lastWeekOfThisYear = getNaiveWeek(#date(thisYear, 12, 28)), weekNumber = if nwn < 1 then lastWeekOfPriorYear else if nwn > lastWeekOfThisYear then 1 else nwn in weekNumber in getISO8601WeekThen modify the formula of the custom column.
WeekList = {DateToISOWeek([Start date])..DateToISOWeek([End date])}Best Regards,
Winniz - 4 years ago
Hi,
This works though all dates must be in the same year.
//Göran
v-kkf-msft
Community Support
4 years agoHi Oleander ,
Please add the following custom function to convert the date to ISO week number.
Referencing: M functions to convert between ISO 8601 Week
let
getISO8601Week = (someDate as date) =>
let
getDayOfWeek = (d as date) =>
let
result = 1 + Date.DayOfWeek(d, Day.Monday)
in
result,
getNaiveWeek = (inDate as date) =>
let
// monday = 1, sunday = 7
weekday = getDayOfWeek(inDate),
weekdayOfJan4th = getDayOfWeek(#date(Date.Year(inDate), 1, 4)),
ordinal = Date.DayOfYear(inDate),
naiveWeek = Number.RoundDown(
(ordinal - weekday + 10) / 7
)
in
naiveWeek,
thisYear = Date.Year(someDate),
priorYear = thisYear - 1,
nwn = getNaiveWeek(someDate),
lastWeekOfPriorYear =
getNaiveWeek(#date(priorYear, 12, 28)),
// http://stackoverflow.com/a/34092382/2014893
lastWeekOfThisYear =
getNaiveWeek(#date(thisYear, 12, 28)),
weekNumber =
if
nwn < 1
then
lastWeekOfPriorYear
else
if
nwn > lastWeekOfThisYear
then
1
else
nwn
in
weekNumber
in
getISO8601Week
Then modify the formula of the custom column.
WeekList = {DateToISOWeek([Start date])..DateToISOWeek([End date])}
Best Regards,
Winniz
Oleander
Helper I
4 years agoHi,
This works though all dates must be in the same year.
//Göran