Forum Discussion
Get Last Year Month using DateAdd DAX from Calculated New Column
Hi Experts,
Firstly i have created one new calculated DAX column to know last date from the table
Site_LastMonthDate = Max(DB[MonthName])
Now going to take Same month using below calculated column (DAX) for previous year based on Site_LastMonthDate (which is already calculated field to get last month inthe table)
Site_LasYearLastMonthName = DATEADD(DB[Site_LastMonthDate].[Date],-12,MONTH)
This above function is not working for the last 12 months name but if i run this for the same year like previous month like Site_LasYearLastMonthName = DATEADD(DB[Site_LastMonthDate].[Date],-1,MONTH) then this works.
It is very surprising. Can someone help me in this on urgent basis if possible.
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)
9 Replies
- MattAllingtonCommunity Champion
You should take a different approach. Read my article about calendar tables here
http://exceleratorbi.com.au/power-pivot-calendar-tables/
Once you have a calendar table, you can write a measure (not a calc column) something like this
sales same month last year = calculate(sum(db[value]),dateadd(calendar[date],-1,year))
- krishnaoptifNew MemberThanks for reply but firstly I need to get the max date from the existing date field then I need to get last year same month from the max date. May u please help me in this ?
- MattAllingtonCommunity Champion
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