I have a list of athletes, events and performances and I would like to average the performances of each athlete in a specific event. The following is an example of the dataset:
|ABEL||CAN||323.25||Final||Women 10m Springboard|
|ABEL||CAN||347.15||Final||Women 10m Springboard|
|ABEL||CAN||338.35||Final||Women 10m Springboard|
|ABEL||CAN||316.95||Final||Women 3m Springboard|
|ABEL||CAN||286.5||Final||Women 3m Springboard|
|AUFFRET||FRA||486.3||Final||Women 10m Springboard|
|AUFFRET||FRA||491.25||Final||Women 10m Springboard|
|AUFFRET||FRA||493.4||Final||Women 10m Springboard|
For example, I would like to average athlete's performances in Women 10m Springboard only. In the case of ABEL (Average[323.25, 347.15, 338.35]) and AUFFRET (Average[486.3, 491.25, 493.4]) and do the same with all the athletes participating in that specific event... Is there a way (DAX) to do this?
Solved! Go to Solution.
Short answer is yes. How you do it will depend on your overall approach.
A simple example would be a Dax measure that is simply "=Average(Table[Field])" (where Table and Field is the field in your table you wish to average). Place that formula on a card and add in 2 slicers. 1 slicer to pick the event and the other to pick the athlete.
If you wanted to get DAX to do all of it, you would use CALCULATE and you could set that in the formula. You would need to figure out how DAX will learn of your selection, but if you give us some more details i'm sure we could advise.
Calculating the average is just an example...
My main concern is to know if it is possible to use a DAX to do calculations on a specific dataset when values in 2 columns are the same. For example, doing average on a dataset when value in COLUMN1 and COLUMN2 coincide.
NAME EVENT PERFORMANCE AVERAGE
Athlete A - Event A - 10.0
Athlete A - Event A - 10.5
Athlete A - Event A - 11
Athlete A - Event B - 0
Athlete A - Event B - 0.5
Athlete A - Event B - 1
In this case, I would like to be able to calculate the average for Athlete A in Event A [10.0, 10.5, 11] = 10.5 and
calculate average for Athlete A in event B [0, 0.5, 1] = 0.5
But I said, average is just an example... in the future I would like to Normalize the performance Score according to previous performances..
I think i get what you are after. You would need to use the "Create Column" and try something like this:
AveragePerformance = Calculate( Average('Table'[Performance]), all('Table') 'Table'[Event] = EARLIER('Table'[Event]), 'Table'[Name] = EARLIER('Table'[Name]) )
I hope that might create what you are chasing.
I have done what you suggested:
Rank = CALCULATE(
'Athletics (ParseHub)'[Name]=EARLIER('Athletics (ParseHub)'[Name]),
'Athletics (ParseHub)'[Event]=EARLIER('Athletics (ParseHub)'[Event])
But I'm getting exactly the same value as in the column [Mark]...
This is a must watch for a message from Power BI!
Click here to read more about the December 2020 Updates!
Click here to read the latest blog and learn more about contributing to the Power BI blog!
Mark your calendars and join us for our next Power BI Dev Camp!.