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.
Goal: average seconds of only the lowest 80% of seconds
Based on data:
ID | yy-mm | Name | seconds |
1 | 21-03 | Ben | 30 |
2 | 21-03 | Joe | 40 |
3 | 21-03 | Ben | 10 |
4 | 21-03 | Joe | 20 |
5 | 21-03 | Joe | 30 |
6 | 21-04 | Joe | 40 |
7 | 21-04 | Joe | 30 |
8 | 21-04 | Ben | 240 |
9 | 21-04 | Ben | 12 |
10 | 21-04 | Ben | 15 |
Desired Output:
Table Visualization:
yy-mm | top 80% Average |
21-03 | 22.5 |
21-04 | 24.25 |
Note: 21-03 is ignoring ID 2 and 21-04 is ignoring ID 8 because they are not in the lowest 80%.
Ideally, the measure could work under the name column as well. E.g.
Name | Top 80% Average |
Ben | 16.75 |
Joe | 30 |
Solved! Go to Solution.
Hi @bengisby
Please use the following measures.
top 80% Average by yy-mm =
VAR _yymm = SELECTEDVALUE ( 'Table 1'[yy-mm] )
VAR _80number = COUNTROWS ( FILTER ( ALL ( 'Table 1' ), 'Table 1'[yy-mm] = _yymm ) ) * 0.8
VAR _80table =
FILTER (
'Table 1',
RANKX (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[yy-mm] = _yymm ),
CALCULATE ( SUM ( 'Table 1'[seconds] ) ),
,
ASC
) <= _80number
)
RETURN
AVERAGEX ( _80table, 'Table 1'[seconds] )
top 80% Average by name =
VAR _name = SELECTEDVALUE ( 'Table 1'[Name] )
VAR _80number = COUNTROWS ( FILTER ( ALL ( 'Table 1' ), 'Table 1'[Name] = _name ) ) * 0.8
VAR _80table =
FILTER (
'Table 1',
RANKX (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[Name] = _name ),
CALCULATE ( SUM ( 'Table 1'[seconds] ) ),
,
ASC
) <= _80number
)
RETURN
AVERAGEX ( _80table, 'Table 1'[seconds] )
top 80% Average =
IF (
ISFILTERED ( 'Table 1'[yy-mm] ),
[top 80% Average by yy-mm],
IF ( ISFILTERED ( 'Table 1'[Name] ), [top 80% Average by name] )
)
Regards,
Community Support Team _ Jing
If this post helps, please Accept it as the solution to help other members find it.
Hi,
You may download my PBI file from here.
Hope this helps.
Hi,
You may download my PBI file from here.
Hope this helps.
Hi @bengisby
Please use the following measures.
top 80% Average by yy-mm =
VAR _yymm = SELECTEDVALUE ( 'Table 1'[yy-mm] )
VAR _80number = COUNTROWS ( FILTER ( ALL ( 'Table 1' ), 'Table 1'[yy-mm] = _yymm ) ) * 0.8
VAR _80table =
FILTER (
'Table 1',
RANKX (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[yy-mm] = _yymm ),
CALCULATE ( SUM ( 'Table 1'[seconds] ) ),
,
ASC
) <= _80number
)
RETURN
AVERAGEX ( _80table, 'Table 1'[seconds] )
top 80% Average by name =
VAR _name = SELECTEDVALUE ( 'Table 1'[Name] )
VAR _80number = COUNTROWS ( FILTER ( ALL ( 'Table 1' ), 'Table 1'[Name] = _name ) ) * 0.8
VAR _80table =
FILTER (
'Table 1',
RANKX (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[Name] = _name ),
CALCULATE ( SUM ( 'Table 1'[seconds] ) ),
,
ASC
) <= _80number
)
RETURN
AVERAGEX ( _80table, 'Table 1'[seconds] )
top 80% Average =
IF (
ISFILTERED ( 'Table 1'[yy-mm] ),
[top 80% Average by yy-mm],
IF ( ISFILTERED ( 'Table 1'[Name] ), [top 80% Average by name] )
)
Regards,
Community Support Team _ Jing
If this post helps, please Accept it as the solution to help other members find it.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
110 | |
94 | |
80 | |
67 | |
59 |
User | Count |
---|---|
150 | |
119 | |
104 | |
87 | |
67 |