Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

How to create a calculated table based on a table with data ranges?

There is a table with date ranges (yyyymm format) : Id Start Period End Period 1 202001 202002 2 202005 202007 I would like to create a calculated table with this transformed data...
  • Anonymous's avatar
    Anonymous
    6 years ago

    Sorry, I misunderstood the requirement... Here's the correct solution (even though this calculation should be done in Power Query).

     

    // Assuming period is int
    
    [Unpivoted Table] =
    SELECTCOLUMNS(
        generate(
            T,
            var __start = T[Start Period]
            var __startDate =
                var __year = int( __start / 100 )
                var __month = mod( __start, 100 )
                var __day = 1
                return
                    date( __year, __month, __day )
            var __end = T[End Period]
            var __endDate =
                var __year = int( __end / 100 )
                var __month = mod( __end, 100 )
                var __day = 1
                return
                    date( __year, __month, __day )            
            return
                DISTINCT(
                    SELECTCOLUMNS(
                        CALENDAR( __startDate, __endDate ),
                        "@Period", int( format( [Date], "yyyyMM" ) )
                    )
                )
        ),
        "Id", [Id],
        "Period", [@Period]
    )