Hopefully someone can help me.
I use the measure below to output a value from the previous month, however it appears to have broken this month (January).
In March it outputs Februarys value, and in April it outputs Marchs value. However as it is January it doen't appear to be outputting Decembers value.
Can anyone advise how I would adapt this measure to retrieve Decembers value?
Previous Month = var current_month= MONTH(TODAY()) return CALCULATE( AVERAGE('DATA_TABLE'[VALUE]), FILTER(DATA_TABLE,MONTH(DATA_TABLE[DATE])=current_month-1))
Thanks for your support.
Dax's Month commmand returns a number. In your case, you're asking for month 0, as january is month number 1. Since there is no month numbered as 0, it returns no data (blank).
You just need to add a condition for when the month is 0, to instead return data for the previous year's last month.
This is a possible solution:
VAR current_month = MONTH(TODAY())
VAR current_year = YEAR(TODAY())
VAR previous_month = current_month - 1
VAR previous_year = current_year - 1
RETURN
CALCULATE(
AVERAGE('Table'[Values]);
FILTER('Table';
IF(previous_month = 0;
MONTH('Table'[Date]) = 12 && YEAR('Table'[Date]) = previous_year;
MONTH('Table'[DATE]) = current_month - 1)
)
)
This way you accomodate for the 0 month value and filter according to it.
If it is not 0, the measure behaves as before. Otherwise it filters for the last month of the previous year.
Related
I have a measure showing Sales Amount for the same period year:
Sales LY = Calculate (Sum('Sales'[Product Sales]), SAMEPERIODLASTYEAR('Sales'[Payment Date].[Date]))
This measure gives me the Sales amount for same date last year. I am looking for a measure which will give me the Sales amount for same day last year.
So January 1st of 2021 was a Friday. So I need it compared to the first Friday in 2020.
Any assistance or guidance please!
You may try to check the first day of the current row year (and last year). January 1st of 2021 = Friday; January 1st of 2020 Wednesday; Diff between this two is 2. We can use this in our calculation. Example:
LastYearTheSameDay = var _firstDayOfYear = WEEKDAY(CALCULATE(MIN('Sample'[Date]), filter(ALL('Sample'), YEAR('Sample'[Date]) = YEAR(SELECTEDVALUE('Sample'[Date])))),1)
var _firstDayOfLastYear = WEEKDAY(CALCULATE(MIN('Sample'[Date]), filter(ALL('Sample'), YEAR('Sample'[Date]) = YEAR(SELECTEDVALUE('Sample'[Date]))-1)),1)
var _diff = _firstDayOfYear - _firstDayOfLastYear
var _corrDay = DAY(SELECTEDVALUE('Sample'[Date])) + _diff
return
if(HASONEVALUE( 'Sample'[Date]),
calculate( sum('Sample'[VAL]), filter(ALL('Sample'), 'Sample'[Date] = DATE(YEAR(SELECTEDVALUE('Sample'[Date]))-1,Month(SELECTEDVALUE('Sample'[Date])),_corrDay) ))
, BLANK() )
I’m trying to calculate last year data incorporated in the following measure.
Previous Month = VAR CurrMonth = MONTH ( TODAY () ) RETURN IF ( CurrMonth = 1, 12, CurrMonth - 1 )
I’ve tried using PREVIOUSYEAR if the current month is 1 (Jan) but it’s grabbing all previous years.
Lets just say that I want to compare todays data (3/10/2021) against the data of the last day of the previous month (2/26/2021), I am using February 26 because is the last business day of the previous month, Is there a Way to do this?
We can get the last day of February that is not a weekend (DAX doesn't have holidays, because each country can have its own free days).
calcForLastDayPrevMonth_noWeekend =
var __firstOfMonth = DATE( YEAR(TODAY()), MONTH(TODAY()), 1)
var __lastDayPrevMonth = calculate( MAX(DateTable[Date]), FILTER(ALL(DateTable), DateTable[Date] < __firstOfMonth && WEEKDAY(DateTable[Date]) not in {1,7} ))
return
calculate( sum(Table[SomeVal]), Table[date] = __lastDayPrevMonth )
I have a column like below for which I would want to extract the number of working days (excluding just weekends- Saturday and Sunday, holidays needs not be addressed).
As of now I just want:
Required_Column = Total No of Days in that month - No of weekends in that month
Month_Year
01-2018
02-2018
03-2018
...
...
01-2019
02-2019
I am a newbie in Power query and DAX , i tried looking up various methods using DAX however, could not find any relevant lead.
Expected Output:
Month_Year Required_Column
01-2018 23 (31-8)
02-2018 20 (28-8)
03-2018 22 (31-9)
... ...
... ...
01-2019 23 (31-8)
02-2019 20 (28-8)
Appreciate your help on this.
Although a Calendar table based approach is recommended as in the comment by RADO and Strawberryshrub, it is also possible to do this with DAX calculated column.
In the example below, I'm assuming MonthYear column contains the first day of each month.
WorkingDays =
VAR Year = YEAR( [MonthYear] )
VAR Month = MONTH( [MonthYear] )
VAR DatesInMonth = GENERATESERIES( [MonthYear], DATE( Year, Month + 1, 1 ) - 1, 1 )
RETURN SUMX(
DatesInMonth,
IF( WEEKDAY( [Value] ) IN { 1, 7 }, 0, 1 )
)
I have the following table:
I need to make a measure to return the values of "last day", but I cant use EOMONTH, because I have the current month, and the current month doesnt end yet, so, the last day of current month is today.
You can use EOMONTH with a bit of extra logic:
LastDay =
VAR CurrDate = MAX(Table1[Date])
RETURN CALCULATE(MAX(Table1[Date]),
FILTER(ALL(Table1),
Table1[Date] > EOMONTH(CurrDate, -1) &&
Table1[Date] <= EOMONTH(CurrDate, 0)))
This takes the max of the dates you have that occur between the end of the previous month and the end of the current month.
Once you have this measure, you can use it to calculate the sum of Value:
Last Date Sum = CALCULATE(SUM(Table01[Value]),
FILTER(Table01, Table01[Date] = [LastDay]))