Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

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

  • 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.

     

  • 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's avatar
    KNP
    Icon for Super User rankSuper 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.