Forum Discussion

TrulsB's avatar
TrulsB
Frequent Visitor
6 years ago
Solved

Count for every month in the date interval

I have a table with service jobs.  The fields is "Title", "Start date", "Stop date".  eg.  Title                                                         Start date                   Stop date "Ser...
  • v-juanli-msft's avatar
    6 years ago

    Hi TrulsB 

    Create a date table ( this date table has no relationship with your table)

    DATE =
    ADDCOLUMNS (
        CALENDARAUTO (),
        "year", YEAR ( [Date] ),
        "quarter", SWITCH (
            TRUE,
            MONTH ( [Date] )
                IN {
                1,
                2,
                3
            }, "Q1",
            MONTH ( [Date] )
                IN {
                4,
                5,
                6
            }, "Q2",
            MONTH ( [Date] )
                IN {
                7,
                8,
                9
            }, "Q3",
            MONTH ( [Date] )
                IN {
                10,
                11,
                12
            }, "Q4"
        ),
        "monthname", FORMAT (
            [Date],
            "mmm"
        ),
        "monthno", FORMAT (
            [Date],
            "yyyy-mm"
        ),
        "week", WEEKNUM (
            [Date],
            2
        )
    )
    

    Create calcualted columns in this date table

    start of month = STARTOFMONTH('DATE'[Date])
    
    end of month = ENDOFMONTH('DATE'[Date])
    
    start of quarter = STARTOFQUARTER('DATE'[Date])
    
    end of quarter = ENDOFQUARTER('DATE'[Date])
    
    start of year = STARTOFYEAR('DATE'[Date])
    
    end of year = ENDOFYEAR('DATE'[Date])

    Add columns from Date table to the X-axis of the visual as below

    Then create measures

    day level =
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[machine] ),
        FILTER (
            'Table',
            'Table'[Start date]
                <= MAX ( 'DATE'[Date] )
                && 'Table'[Stop date]
                    >= MAX ( 'DATE'[Date] )
        )
    )
    
    month level =
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[machine] ),
        FILTER (
            'Table',
            'Table'[Stop date]
                >= MAX ( 'DATE'[start of month] )
                && 'Table'[Start date]
                    <= MAX ( 'DATE'[end of month] )
        )
    )
    
    
    quarter level =
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[machine] ),
        FILTER (
            'Table',
            'Table'[Stop date]
                >= MAX ( 'DATE'[start of quarter] )
                && 'Table'[Start date]
                    <= MAX ( 'DATE'[end of quarter] )
        )
    )
    
    year level =
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[machine] ),
        FILTER (
            'Table',
            'Table'[Stop date]
                >= MAX ( 'DATE'[start of year] )
                && 'Table'[Start date]
                    <= MAX ( 'DATE'[end of year] )
        )
    )
    
    
    Final result =
    IF (
        ISINSCOPE ( 'DATE'[Date] ),
        [day level],
        IF (
            ISINSCOPE ( 'DATE'[week] ),
            [day level],
            IF (
                ISINSCOPE ( 'DATE'[monthname] ),
                [month level],
                IF (
                    ISINSCOPE ( 'DATE'[quarter] ),
                    [quarter level],
                    [year level]
                )
            )
        )
    )
    
    

     

    Best Regards
    Maggie
    Community Support Team _ Maggie Li
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.