Forum Discussion

Hennadii's avatar
Hennadii
Icon for Helper IV rankHelper IV
6 years ago
Solved

Create a table with dates based on Start / End Dates and Values on another Table

Hi there,

I have a Period table with Star Date and End Date columns. Periods are not overlap each other, so each date is related to certain Period.

PeriodStart DateEnd Date
period 101/01/202001/03/2020
period 201/07/202001/08/2020

I'd like to create a new table (like a Calendar or Date), with a columns Date and Period.

Please help me to write expression which creates the table as below.

DatePeriod
01/01/2020period 1
01/02/2020period 1
01/03/2020period 1
01/07/2020period 2
01/08/2020period 2
  • Perhaps:

     

     

    Calendar Table = 
      ADDCOLUMNS(
        CALENDAR(DATE(2020,1,1),DATE(2020,12,31)),
        "Period",MAXX(FILTER('Table',[Start Date]<=[Date] && [End Date]>=[Date]),[Period])
      )

    Hennadii 

     

5 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Icon for Community Champion rankCommunity Champion

    Perhaps:

     

     

    Calendar Table = 
      ADDCOLUMNS(
        CALENDAR(DATE(2020,1,1),DATE(2020,12,31)),
        "Period",MAXX(FILTER('Table',[Start Date]<=[Date] && [End Date]>=[Date]),[Period])
      )

    Hennadii 

     

      • Greg_Deckler's avatar
        Greg_Deckler
        Icon for Community Champion rankCommunity Champion

        Sure, if you have dates in your data, you can use MIN and MAX or use CALENDARAUTO but not sure what your data looks like. If you have posted the sum total of your data, you will need to parse out the beginning and ending dates of your periods.

         

        Please see this post regarding How to Get Your Question Answered Quickly: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

        The most important parts are:
        1. Sample data as text, use the table tool in the editing bar
        2. Expected output from sample data
        3. Explanation in words of how to get from 1. to 2.

  • Hennadii ,

    Try

    Create a date table
    Date = calendar(Min(Period[Start Date]),Max(Period[End Date]))

     

    Add a new column in that

    Period = minx(filter(period, Period[Start Date]<=Date[Date] && Period[End Date]>=Date[Date]),Period[Period])