Forum Discussion

Dukezera's avatar
Dukezera
Frequent Visitor
4 years ago
Solved

Help expanding table according dates

I have a table like below, where a new record is created when there is a change in the status of a task. task stat lastupdate A 1 28/04/2022 A 3 01/05/2022 A 5 05/05/2022 B...
  • Greg_Deckler's avatar
    4 years ago

    Dukezera Try:

    Tasks2 = 
        ADDCOLUMNS(
            GENERATE(
                DISTINCT('Tasks'[task]),
                CALENDAR(MIN('Tasks'[lastupdate]),MAX('Tasks'[lastupdate]))
            ),
            "status",
                    VAR __Date = [Date]
                    VAR __Task = [task]
                    VAR __TargetDate = MAXX(FILTER('Tasks',[lastupdate] <= __Date && [task] = __Task),[lastupdate])
                RETURN
                    MAXX(FILTER('Tasks',[task] = __Task && [lastupdate] = __TargetDate),[stat])
        )
  • Greg_Deckler's avatar
    Greg_Deckler
    4 years ago

    Dukezera Great! So I don't know where those columns are coming from exactly or how they work but seems like you could do something like:

    Tasks2 = 
    VAR __Table =
        ADDCOLUMNS(
            GENERATE(
                DISTINCT('Tasks'[task]),
                CALENDAR(MIN('Tasks'[lastupdate]),MAX('Tasks'[lastupdate]))
            ),
            "status",
                    VAR __Date = [Date]
                    VAR __Task = [task]
                    VAR __TargetDate = MAXX(FILTER('Tasks',[lastupdate] <= __Date && [task] = __Task),[lastupdate])
                RETURN
                    MAXX(FILTER('Tasks',[task] = __Task && [lastupdate] = __TargetDate),[stat]),
            "approved",
                    VAR __Date = [Date]
                    VAR __Task = [task]
                    VAR __TargetDate = MAXX(FILTER('Tasks',[lastupdate] <= __Date && [task] = __Task),[lastupdate])
                RETURN
                    MAXX(FILTER('Tasks',[task] = __Task && [lastupdate] = __TargetDate),[approved]),
            "stn",
                    VAR __Date = [Date]
                    VAR __Task = [task]
                    VAR __TargetDate = MAXX(FILTER('Tasks',[lastupdate] <= __Date && [task] = __Task),[lastupdate])
                RETURN
                    MAXX(FILTER('Tasks',[task] = __Task && [lastupdate] = __TargetDate),[stn])
        )
    RETURN
      FILTER(__Table, [status] <> BLANK() && [approved] <> BLANK() && [stn] <> BLANK())