Forum Discussion

nmamm's avatar
nmamm
Frequent Visitor
3 years ago
Solved

metric by date range with multiple sequential observations per category

I have a data set which represents the occupancy of apartment units:    I would like to report on the number of occupied units per day, which I figure should be done in the following way: fo...
  • nmamm's avatar
    nmamm
    3 years ago

    Greg_Deckler I think I got it..

    % Mkt Occ = 
    VAR tmpunitStatus = ADDCOLUMNS(unitstatus,"Effective Date",IF(ISBLANK([End]),TODAY(),[End]))
    VAR tmpTable =  
        FILTER(
            GENERATE(
                   tmpunitStatus,
                CalendarTable
            ),
        
           and( And([Date] <= [End], [Date] >= [Start]),[Status]="Occupied")
        )
    
    RETURN COUNTROWS(tmpTable)/DISTINCTCOUNT([UnitID])

     

    I realized part of the issue was that the fact table was linked to the date table, which was forcing unwanted behavior. When I plot this by day, it produces expected results. However, if you try summarize the data by any other time dimension (particularly because it is rows of days that is used in the generate function) then I get sums of daily amounts (of course) which I don't want. Therefore, inspired by this I came up with the following solution:

    % Mkt Occ (Current) = 
    VAR tmpTable =  
        FILTER(
    unitstatus,
           and( And(max(CalendarTable[Date]) <= [End], max(CalendarTable[Date]) >= [Start]),[Status]="Occupied")
        )
    
    RETURN COUNTROWS(tmpTable)/DISTINCTCOUNT(unitstatus[UnitID])

    Inspired by your suggested solution, dynamically filter the fact table based on the max date of the calendar table, which itself is dynamic based on the time dimension being plotted.