Forum Discussion
Get Last Year Month using DateAdd DAX from Calculated New Column
- 9 years ago
krishnaoptif wrote:...now i need to create the matrix where SiteName willl be in rows, and need to add few % change Columns like (% change for sum of CountValue from Current Month[Oct-2016] Vs Previous Month[Sep-2016], Current Month[Oct-2016] Vs Last Year the Same Month[Oct-2015], Current Month - previous two months [Aug-2016] Vs Last Year Same Same Month [Aug-2015]
The way you are thinking about this problem is appopriate for Excel, but it is the wrong approach for Power Pivot. This is what you need to do.
1. Create a calendar table. This table should contain a month column (which you actually have as a data column using the first day of the month - this is fine) and an ID column. Read my article I posted above. Let's assume your calendar table is called calendar and the columns are called Month, ID.
2. Connect your data table to your calendar table on the month column
3. The measures you need to do what you want will be as follows (Just follow the pattern for other measures)
Chg vs Prior Month = calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] = max(calendar[ID])-1))
Chg vs Same Month PY= calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] = max(calendar[ID])-12))
Rolling 3 Months this year = calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] >= max(calendar[ID])-2 && calendar[ID] <=max(calendar[ID]))
Rolling 3 Months last year = calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] >= max(calendar[ID])-14 && calendar[ID] <=max(calendar[ID])-12)
You have a view of what you need to do, but I'm not clear if your approach is correct or not. Can you describe the output you want. Just use Excel to show what your looking for and post an image
Hi Matt, Below is the data screen shot where we have data till Oct-2016 (which is the current month based on the data) now i need to create the matrix where SiteName willl be in rows, and need to add few % change Columns like (% change for sum of CountValue from Current Month[Oct-2016] Vs Previous Month[Sep-2016], Current Month[Oct-2016] Vs Last Year the Same Month[Oct-2015], Current Month - previous two months [Aug-2016] Vs Last Year Same Same Month [Aug-2015]
That is why i was adding one new calculated column to get the Max date from the MonthName column and then was trying to calculate based on that : I was filtering value like below my formula which is working fine for current year calculation till Jan-2016 but when i apply minus -12 month then it gives null as it is moving to 2015 year:
Site_This Month-1 = SUMX(FILTER(DB,DB[MonthName]=DateAdd(DB[Site_LastMonthDate].[Date],-1,MONTH)),DB[CountValue])
When i Change -1 to -12 (as this will move to Oct-2015) then it is showing null value.
Site_This Month-1 = SUMX(FILTER(DB,DB[MonthName]=DateAdd(DB[Site_LastMonthDate].[Date],-12,MONTH)),DB[CountValue])
- richbenmintz9 years agoResident Rockstar
i think your current month column should like yyyymm, then to get last year at the same time you would subtract 100.
- krishnaoptif9 years agoNew Member
No this can not work rich.
Hi Matt, Do you any good idea.
- richbenmintz9 years agoResident Rockstar
can you explain, why it will not work, I use this pattern all the time for data calculations. depending on how you have filtered you report/visual, you may have to clear filter context to allow the measure to find the prior periods.
- MattAllington9 years agoCommunity Champion
krishnaoptif wrote:...now i need to create the matrix where SiteName willl be in rows, and need to add few % change Columns like (% change for sum of CountValue from Current Month[Oct-2016] Vs Previous Month[Sep-2016], Current Month[Oct-2016] Vs Last Year the Same Month[Oct-2015], Current Month - previous two months [Aug-2016] Vs Last Year Same Same Month [Aug-2015]
The way you are thinking about this problem is appopriate for Excel, but it is the wrong approach for Power Pivot. This is what you need to do.
1. Create a calendar table. This table should contain a month column (which you actually have as a data column using the first day of the month - this is fine) and an ID column. Read my article I posted above. Let's assume your calendar table is called calendar and the columns are called Month, ID.
2. Connect your data table to your calendar table on the month column
3. The measures you need to do what you want will be as follows (Just follow the pattern for other measures)
Chg vs Prior Month = calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] = max(calendar[ID])-1))
Chg vs Same Month PY= calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] = max(calendar[ID])-12))
Rolling 3 Months this year = calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] >= max(calendar[ID])-2 && calendar[ID] <=max(calendar[ID]))
Rolling 3 Months last year = calculate(sum(db[countvalue]),filter(all(calendar),calendar[ID] >= max(calendar[ID])-14 && calendar[ID] <=max(calendar[ID])-12)
- richbenmintz9 years agoResident Rockstar
Hi Matt,
Thanks for providing more context, this is what I was trying to get at with my suggestion, I typically use date math with integer representation of the date as they also provide ordering columns for the date labels.
Thanks