Forum Discussion

EVBI's avatar
EVBI
Regular Visitor
8 years ago
Solved

Sum value between start date and end date

Hi All,   I'm very new to PowerBI and need some help on how to sum up revenue in between 2 dates.   My data source looks like this: Date format is (DD/MM/YYYY)   I would like to calc...
  • v-yulgu-msft's avatar
    8 years ago

    Hi EVBI,

     

    Please refer to below steps:

     

    1. I am not sure which column is the unique column in source table, so I first added an Index column in Query Editor mode. 

     

    2. Create a calendar table.

    Dim date Tb = CALENDAR(DATE(2018,1,1),DATE(2018,12,31))
    Days per month = CALCULATE ( DAY ( MAX ( 'Dim date Tb'[Date] ) ), ALLEXCEPT ( 'Dim date Tb', 'Dim date Tb'[Date].[Year], 'Dim date Tb'[Date].[Month] ) )

     

    3. Cross Join calendar table and fact data table, and add below calculated columns.

    Cross Join Tb =
    ADDCOLUMNS (
        FILTER (
            CROSSJOIN ( 'Dim date Tb', data ),
            'Dim date Tb'[Date] >= [start date]
                && 'Dim date Tb'[Date] <= [end date]
        ),
        "Year", YEAR ( [Date] ),
        "Month", MONTH ( [Date] )
    )
    
    Count days =
    CALCULATE (
        COUNT ( [Date] ),
        ALLEXCEPT (
            'Cross Join Tb',
            'Cross Join Tb'[Year],
            'Cross Join Tb'[Month],
            'Cross Join Tb'[Index]
        )
    )
    
    Actual Rev =
    'Cross Join Tb'[Count days] / 'Cross Join Tb'[Days per month]
        * 'Cross Join Tb'[Net Rev(USD)]

     

    4. Summarize above table.

    Summarize Tb =
    SUMMARIZE (
        'Cross Join Tb',
        'Cross Join Tb'[Year],
        'Cross Join Tb'[Month],
        'Cross Join Tb'[Index],
        "Net Rev", AVERAGE ( 'Cross Join Tb'[Actual Rev] )
    )

     

    5. Below calculated table is the final output.

    Summarize Tb2 =
    SUMMARIZE (
        'Summarize Tb',
        'Summarize Tb'[Year],
        'Summarize Tb'[Month],
        "Sum Rev per month", SUM ( 'Summarize Tb'[Net Rev] )
    )
    

     

    Best regards,

    Yuliana Gu