Forum Discussion

fsim's avatar
fsim
Responsive Resident
4 years ago
Solved

list.generate from a list

hi ! I have a list of dates , a repeating factor and an end date. something like this: {"07/03/2022", "08/03/2022";"09/03/2022"}, every week, until "31/07/2022". In other words, there is a reccurin...
  • fsim's avatar
    4 years ago

    Thejeswar , 

    here is how I managed to do it.

    First of all, let me explain the full process. (I should have started with this)
    Users are asked to encode their planning workload for the coming year. They fill in a form with those 7 fields.
    userId, projectId, starting_date, ending_date, hours, repeateveryweek, repeat_end_date
    for example, user 01, working on project "alpha" plans to work  8h/day from "07/03/2022" to "09/03/2022" and repeat this workload every 1 week until the end of July.
    01,"alpha","07/03/2022","09/03/2022",8,1,"31/07/2022".

    what I want, at the end is something like this until end of july

    userIdprojectidlistdatehours
    01alpha07/03/20228
    01alpha08/03/20228
    01alpha09/03/20228
    01alpha14/03/20228
    01alpha15/03/20228
    01alpha16/03/20228
    01alpha21/03/20228
    01alpha22/03/20228
    01alpha23/03/20228
    01alpha28/03/20228
    01alpha29/03/20228
    01alpha30/03/20228
    01alpha04/04/20228
    01alpha05/04/20228
    01alpha06/04/20228

     

    what I did: 

    I first converted startdate and endate to a list of dates using List.Dates([start_date],Duration.Days([end_date]-[start_date])+1, #duration(1,0,0,0)))

    then I splitted the list in new rows with = Table.ExpandListColumn

    Last I repeated this process but this time using the repeat_end_date instead of end_date

    =  List.Dates([ListDate],(Duration.Days([repeat_end_date]-[ListDate])+1)/7*repeateveryweek, #duration(7*repeateveryweek,0,0,0)) 

    And split that list again in new rows.

     

    thanks for all your inputs. it helped me figuring out how to solve this.