Forum Discussion

kaym's avatar
kaym
Helper I
2 years ago
Solved

remove Max values in an index column

How can i remove the row with highest order count in each shipment? For below data:

for example, for shipment # 37136 it should not show the row with order count 4

  • Anonymous's avatar
    Anonymous
    2 years ago

    Let's say your last step was PriorStep. I would group by Shipment # column, and choose the Max Aggregation for the ORDER COUNT column. Name that step "Group" or whatever you want. Then you can join that table to PriorStep using a left anti join. So after grouping, 

     

    = Table.Join(PriorStep, {"SHIPMENT #", "ORDER COUNT"}, Group, {"GROUPED SHIPMENT # COLUMN", "Max ORDER COUNT"}, JoinKind.LeftAnti)

     

    Side note: using the "#" character in your column name is going to get you into trouble some day, because somehow it'll get parsed as an escape character and mess up your quotes.

     

    --Nate

5 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Let's say your last step was PriorStep. I would group by Shipment # column, and choose the Max Aggregation for the ORDER COUNT column. Name that step "Group" or whatever you want. Then you can join that table to PriorStep using a left anti join. So after grouping, 

     

    = Table.Join(PriorStep, {"SHIPMENT #", "ORDER COUNT"}, Group, {"GROUPED SHIPMENT # COLUMN", "Max ORDER COUNT"}, JoinKind.LeftAnti)

     

    Side note: using the "#" character in your column name is going to get you into trouble some day, because somehow it'll get parsed as an escape character and mess up your quotes.

     

    --Nate

  • smpa01's avatar
    smpa01
    Community Champion

    kaym

    Table.SelectRows(prevStep, (x)=>x[orderCount]<>List.Max(Table.SelectRows(prevStep, (y)=> x[shipment]=y[shipment])[orderCount]))
      • smpa01's avatar
        smpa01
        Community Champion
        let
            Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAeJYHQjLCM4yBrOMgCxLOMvQQCk2FgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [shipment = _t, orderCount = _t]),
            #"Changed Type" = Table.TransformColumnTypes(Source,{{"shipment", Int64.Type}, {"orderCount", Int64.Type}}),
            #"Filtered Rows" = Table.SelectRows(#"Changed Type", (x)=>x[orderCount]<>List.Max(Table.SelectRows(#"Changed Type", (y)=> x[shipment]=y[shipment])[orderCount]))
        in
            #"Filtered Rows"

         

        kaym try the above