Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

[DAX] Different between row based on column value

Hi all, 

 I have the electric reading data as below. I am looking to calculate the consumption of electric every month based on level. the logic is [ reading current month - reading previous month = current month consumption].

 

My question is how can i create the dax based on data I have as below; 

 


thanks in advance for help!



  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi  Anonymous ,

    I created a sample pbix file(see attachment) for you, please check whether that is what you want. You can create a calculated column or measure as below:

    calculated column:

    Column = 
    VAR _year =
        IF ( 'Table'[Month] = 1, 'Table'[Year] - 1, 'Table'[Year] )
    VAR _month =
        IF ( 'Table'[Month] = 1, 12, 'Table'[Month] - 1 )
    VAR _premreading =
        CALCULATE (
            SUM ( 'Table'[reading] ),
            FILTER (
                ALLSELECTED ( 'Table' ),
                'Table'[Level] = EARLIER('Table'[Level])
                    && 'Table'[Year] = _year
                    && 'Table'[Month] = _month
            )
        )
    RETURN
        IF(ISBLANK(_premreading),BLANK(),'Table'[reading]-_premreading)

    Measure:

    consumption = 
    VAR _curlevel =
        SELECTEDVALUE ( 'Table'[Level] )
    VAR _curyear =
        SELECTEDVALUE ( 'Table'[Year] )
    VAR _curmonth =
        SELECTEDVALUE ( 'Table'[Month] )
    VAR _year =
        IF ( _curmonth = 1, _curyear - 1, _curyear )
    VAR _month =
        IF ( _curmonth = 1, 12, _curmonth - 1 )
    VAR _premreading =
        CALCULATE (
            SUM ( 'Table'[reading] ),
            FILTER (
                ALLSELECTED ( 'Table' ),
                'Table'[Level] = _curlevel
                    && 'Table'[Year] = _year
                    && 'Table'[Month] = _month
            )
        )
    RETURN
        IF(ISBLANK(_premreading),BLANK(),SUM('Table'[reading])-_premreading)

    If the above one can't help you get the desired result, please provide some sample data in your tables (exclude sensitive data) with Text format and your expected result with backend logic and special examples. It is better if you can share a simplified pbix file. You can refer the following link to upload the file to the community. Thank you.

    How to upload PBI in Community

    Best Regards

3 Replies

  • Anonymous , Create a date with help from month and year, and join it with date of date table and use TI for meaures

     

    Date = date([year], [month],1)

     

    MTD Sales = CALCULATE(SUM(Table[reading]),DATESMTD('Date'[Date]))
    last MTD Sales = CALCULATE(SUM(Table[reading]),DATESMTD(dateadd('Date'[Date],-1,MONTH)))
    last month Sales = CALCULATE(SUM(Table[reading]),previousmonth('Date'[Date]))

     

     

    Power BI — Month on Month with or Without Time Intelligence
    https://medium.com/@amitchandak.1978/power-bi-mtd-questions-time-intelligence-3-5-64b0b4a4090e

  • MahyarTF's avatar
    MahyarTF
    Memorable Member

    Hi,

    Create a Index in power Query, then create below Column in particular table :

    _Consumption =
    Var _CurrentIndex = Sheet150[Index]
    Var _CurrentLevel = Sheet150[Level]
    Var _previousIndex = CALCULATE( max(Sheet150[Index]),
                                    filter(Sheet150, Sheet150[Index] < _CurrentIndex),
                                    filter(sheet150, Sheet150[Level] = _CurrentLevel),
                                    ALLEXCEPT(Sheet150,sheet150[level],Sheet150[Month Name], Sheet150[Month], Sheet150[Year])
                                )
    var _PreviousReading = CALCULATE( max(Sheet150[reading]), filter(Sheet150, Sheet150[Index] = _previousIndex))
    return Sheet150[reading] - _PreviousReading
    this is the result : 

     

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi  Anonymous ,

    I created a sample pbix file(see attachment) for you, please check whether that is what you want. You can create a calculated column or measure as below:

    calculated column:

    Column = 
    VAR _year =
        IF ( 'Table'[Month] = 1, 'Table'[Year] - 1, 'Table'[Year] )
    VAR _month =
        IF ( 'Table'[Month] = 1, 12, 'Table'[Month] - 1 )
    VAR _premreading =
        CALCULATE (
            SUM ( 'Table'[reading] ),
            FILTER (
                ALLSELECTED ( 'Table' ),
                'Table'[Level] = EARLIER('Table'[Level])
                    && 'Table'[Year] = _year
                    && 'Table'[Month] = _month
            )
        )
    RETURN
        IF(ISBLANK(_premreading),BLANK(),'Table'[reading]-_premreading)

    Measure:

    consumption = 
    VAR _curlevel =
        SELECTEDVALUE ( 'Table'[Level] )
    VAR _curyear =
        SELECTEDVALUE ( 'Table'[Year] )
    VAR _curmonth =
        SELECTEDVALUE ( 'Table'[Month] )
    VAR _year =
        IF ( _curmonth = 1, _curyear - 1, _curyear )
    VAR _month =
        IF ( _curmonth = 1, 12, _curmonth - 1 )
    VAR _premreading =
        CALCULATE (
            SUM ( 'Table'[reading] ),
            FILTER (
                ALLSELECTED ( 'Table' ),
                'Table'[Level] = _curlevel
                    && 'Table'[Year] = _year
                    && 'Table'[Month] = _month
            )
        )
    RETURN
        IF(ISBLANK(_premreading),BLANK(),SUM('Table'[reading])-_premreading)

    If the above one can't help you get the desired result, please provide some sample data in your tables (exclude sensitive data) with Text format and your expected result with backend logic and special examples. It is better if you can share a simplified pbix file. You can refer the following link to upload the file to the community. Thank you.

    How to upload PBI in Community

    Best Regards