Forum Discussion
Filter out top 3 rows based on same timestamp
Hello,
Im new to power bi, and would be very grateful if someone could help me out.
I have table with 3 columns timestamp, procedure, average_cpu.
Everytime when data gets generated its marked with timestamp. Rows are already sorted by average_cpu, but in the result i would like to get new table with only first 3 rows in each timestamp
Thank you in advance for your time and help.
Cheers, Kristaps
Do a Group By on the timestamp column with a new column that keeps all rows for each separate time stamp.
This will generate a step with code that looks like this:
= Table.Group(#"Changed Type", {"timestamp"}, {{"Top3", each _, type table}})We want to modify this slightly using Table.MaxN:
= Table.Group(#"Changed Type", {"timestamp"}, {{"Top3", each Table.MaxN(_, "avergae_cpu", 3), type table}})All that's left is to expand the new Top3 table column by clicking the expand button in the top right corner and pick which columns you want.
3 Replies
- AlexisOlson
Super User
Do a Group By on the timestamp column with a new column that keeps all rows for each separate time stamp.
This will generate a step with code that looks like this:
= Table.Group(#"Changed Type", {"timestamp"}, {{"Top3", each _, type table}})We want to modify this slightly using Table.MaxN:
= Table.Group(#"Changed Type", {"timestamp"}, {{"Top3", each Table.MaxN(_, "avergae_cpu", 3), type table}})All that's left is to expand the new Top3 table column by clicking the expand button in the top right corner and pick which columns you want.
- Fowmy
Super User
Anonymous
Create a new table with the following code:FILTER( ADDCOLUMNS ( Table1, "Top3", TABLE1[avergae, cpu] IN SELECTCOLUMNS ( TOPN ( 3, ALLEXCEPT ( Table1, table1[timestamp] ), CALCULATE ( MAX ( table1[avergae, cpu] ) ) ), Table1[avergae, cpu] ) ), [Top3] = TRUE () ) - KNP
Super User
Hi Anonymous,
This is kind of the same solution as AlexisOlson has offered, I'm only posting this as I'd already started working on it.
Attached PBIX.
Essentially, adding an index to the grouped table and keeping values where index is less than 3.