Forum Discussion

Oleander's avatar
Oleander
Icon for Helper I rankHelper I
4 years ago
Solved

Calculate 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...
  • v-kkf-msft's avatar
    v-kkf-msft
    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
        getISO8601Week

     

    Then modify the formula of the custom column.

     

    WeekList = {DateToISOWeek([Start date])..DateToISOWeek([End date])}

     

    Best Regards,
    Winniz

  • Oleander's avatar
    Oleander
    4 years ago

    Hi,

    This works though all dates must be in the same year.

     

    //Göran