Forum Discussion

souvik900766's avatar
souvik900766
Icon for Helper IV rankHelper IV
5 years ago
Solved

Return data from specified time interval in all rows in a calculated column

 

Hi !

My Data:-

YearMonth CY2018
2019     Jan,19        784003.6     
2020Jan,20796923 
2021Jan,21912686.3 
2018Jan,18754578.3 

I want to return year 2018 CY Value i.e. 754578 in 2018 Column in all rows.
The calculation should be based on latest month for e.g.
MAX(Month),dateadd(month,-3,year)
So, here I want to find from Jan, 2021, to 3 years prior data.
I tried with this options but not working.

Thanks in advance !

  • Ashish_Mathur's avatar
    Ashish_Mathur
    5 years ago

    Hi,

    This calculated column formula works

    CALCULATE(SUM(Data[CY]),FILTER(Data,Data[Month]=EDATE(MAX(Data[Month]),-36)&&Data[Month]=EDATE(MAX(Data[Month]),-36)))

    Hope this helps.

  • // I think you're not doing it right
    // since having columns named like
    // 2019, 2PY, 2018... is a clear sign
    // you're not modeling your data
    // the way it should be and you're not
    // following Best Practices of dimensional
    // design. But it's up to you after all
    // to solve problems that do not exist
    // in correct models.
    //
    // With that being said, here is
    // the thing you want, I guess:
    
    [2018] = // calculated column
    var CurrentMonth = T[Month]
    var _2018Value =
        MAXX(
            // This filter should return
            // not more than 1 row. Possibly
            // an empty set depending on
            // your data.
            filter(
                T,
                T[Year] = 2018
                &&
                T[Month] = CurrentMonth
            ),
            T[CY]
        )
    return
        _2018Value

7 Replies

  • Hi,

    What exactly is your end objective?  Also, why are you writing this as a calculated column formula (and not as a measure)?

    • souvik900766's avatar
      souvik900766
      Icon for Helper IV rankHelper IV

      Hi Ashish_Mathur 
      Mu objective
      I want to return year 2018 CY Value i.e. 754578 in 2018 Column in all rows.
      The calculation should be based on latest month for e.g.
      MAX(Month),dateadd(month,-3,year)
      So, here I want to find from Jan, 2021, to 3 years prior data.
      This is the requirement of the client....If u want u can solve this with measure....I will try to convert it into columns

      • Ashish_Mathur's avatar
        Ashish_Mathur
        Icon for Super User rankSuper User

        Hi,

        This calculated column formula works

        CALCULATE(SUM(Data[CY]),FILTER(Data,Data[Month]=EDATE(MAX(Data[Month]),-36)&&Data[Month]=EDATE(MAX(Data[Month]),-36)))

        Hope this helps.

  • // I think you're not doing it right
    // since having columns named like
    // 2019, 2PY, 2018... is a clear sign
    // you're not modeling your data
    // the way it should be and you're not
    // following Best Practices of dimensional
    // design. But it's up to you after all
    // to solve problems that do not exist
    // in correct models.
    //
    // With that being said, here is
    // the thing you want, I guess:
    
    [2018] = // calculated column
    var CurrentMonth = T[Month]
    var _2018Value =
        MAXX(
            // This filter should return
            // not more than 1 row. Possibly
            // an empty set depending on
            // your data.
            filter(
                T,
                T[Year] = 2018
                &&
                T[Month] = CurrentMonth
            ),
            T[CY]
        )
    return
        _2018Value
      • daxer-almighty's avatar
        daxer-almighty
        Icon for Solution Sage rankSolution Sage

        Your formula is different than mine. That's the first thing. Secondly, you asked about the year 2018. This is what I gave you. The month you put in my formula must be the plain month without the year attached, of course. Please create a column that will store just the plain month as a number (1,...,12) or a name.