Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Calculate Average with Filter in DAX not working

I have a table with a Working Days column, which is integer type, and a Latest Action Date column with date (01/01/2020). I want a DAX measure to calculate the average but only for 2020 dates.

 

 

Latest Submission DateLatest Action Date

Working Days

4/1/20204/4/20204
4/3/20204/5/20202
1/4/20211/5/20211

 

 

 

I tried the following measures I wrote:

 

2020 Avg SLA =
CALCULATE ( AVERAGE ( 'Pivoted Audit Log'[Working Days] ), 'Pivoted Audit Log'[Latest TM Action Date] < 01/01/2021 )
 
2020 Avg SLA Fixed = CALCULATE(
AVERAGE('Pivoted Audit Log'[Working Days]),
FILTER('Pivoted Audit Log', 'Pivoted Audit Log'[Latest TM Action Date] < 01/01/2021))

 

 

Got this error though both times: 

 

Error Message:
MdxScript(Model) (35, 60) Calculation error in measure 'Pivoted Audit Log'[2020 Avg SLA Fixed]: DAX comparison operations do not support comparing values of type Text with values of type Number. Consider using the VALUE or FORMAT function to convert one of the values.

 

 

My objective:

 

A measure that calculates the average in a column, but only for year 2020, and then, another measure that calculates the average in a column but only for year 2021

1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@Anonymous , you can create a new column like

 


Work Day =
Var _end = if([Latest Action Date] > Date(2020,12,31),Date(2020,12,31), [Latest Action Date])
return
COUNTROWS(FILTER(ADDCOLUMNS(CALENDAR(Table[Latest Submission Date])_end),"WorkDay", if(WEEKDAY([Date],2) <6,1,0)),[WorkDay] =1))

 

 

or measure with some group by row id

Work Day =
Var _end = if(max([Latest Action Date]) > Date(2020,12,31),Date(2020,12,31), max[Latest Action Date]))
return
AverageX(Values(Table[RowID]), COUNTROWS(FILTER(ADDCOLUMNS(CALENDAR(max(Table[Latest Submission Date]),_end),"WorkDay", if(WEEKDAY([Date],2) <6,1,0)),[WorkDay] =1)))

View solution in original post

1 REPLY 1
amitchandak
Super User
Super User

@Anonymous , you can create a new column like

 


Work Day =
Var _end = if([Latest Action Date] > Date(2020,12,31),Date(2020,12,31), [Latest Action Date])
return
COUNTROWS(FILTER(ADDCOLUMNS(CALENDAR(Table[Latest Submission Date])_end),"WorkDay", if(WEEKDAY([Date],2) <6,1,0)),[WorkDay] =1))

 

 

or measure with some group by row id

Work Day =
Var _end = if(max([Latest Action Date]) > Date(2020,12,31),Date(2020,12,31), max[Latest Action Date]))
return
AverageX(Values(Table[RowID]), COUNTROWS(FILTER(ADDCOLUMNS(CALENDAR(max(Table[Latest Submission Date]),_end),"WorkDay", if(WEEKDAY([Date],2) <6,1,0)),[WorkDay] =1)))

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.