Forum Discussion
Return data from specified time interval in all rows in a calculated column
Hi !
My Data:-
| Year | Month | CY | 2018 |
| 2019 | Jan,19 | 784003.6 | |
| 2020 | Jan,20 | 796923 | |
| 2021 | Jan,21 | 912686.3 | |
| 2018 | Jan,18 | 754578.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 !
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
- Ashish_Mathur
Super User
Hi,
What exactly is your end objective? Also, why are you writing this as a calculated column formula (and not as a measure)?
- souvik900766
Helper 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
Super 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.
- daxer-almighty
Solution Sage
// 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- souvik900766
Helper IV
Hi daxer-almighty ,
Its not returning the correct value.- daxer-almighty
Solution 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.