Forum Discussion

aJamie's avatar
aJamie
Frequent Visitor
4 years ago
Solved

Summarising Tables

Hi,

I have a simple table which I would like to summarise by only returning the row with the latest (max) ID for each REF.

Any help with this would be appreciated.

Current:

 

REFIDID_DESCDATE
130339/02598AAA23/02/2021
130339/02660BBB22/02/2021
130411/02529AAA24/02/2021
130411/02547BBB24/02/2021
130411/02570CCC23/02/2021
130411/02571DDD24/02/2021
130411/02595EEE24/02/2021
130411/02596FFF25/02/2021
130411/02597GGG24/02/2021
130411/02660HHH01/03/2021
130411/02695III01/03/2021
131043/05599AAA01/03/2021
131043/05660BBB02/03/2021
131043/05695CCC02/03/2021
131432/04571AAA22/02/2021
131432/04576BBB22/02/2021
131432/04595CCC22/02/2021
131432/04640DDD22/02/2021
131432/04670EEE24/02/2021
131432/04695FFF24/02/2021

 

 

Desired Output:

 

REFIDID_DESCDATE
130339/02660BBB22/02/2021
130411/02695III01/03/2021
131043/05695CCC02/03/2021
131432/04695FFF24/02/2021

 

 

Best wishes,

Jamie.

  • Here's one way to do it in the query editor.  To see how it works, just create a blank query, open the Advanced Editor and replace the text there with the M code below.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hZJLEoQgDETvwtoqAwQcln7BM1je/xoT0BqiI7jpRepVd0izbUJq0Nq1oEQjjPuQ9n1PqjTNWgVKir25YtYC6TAMEVN3DKU83ZTLbljGsMtuFayLoeM4Pu7GMEk6TdOLmzOk8zy/YZZ0WZaImQoWn+C9r7sddwshkALNdAFLu63r+oRJQHq8SaH5vBWMl0WLFbEUepz3H0NNI/yd9+z0Xj3HbPmHMIyFVjCLkDutYOmHFDplWAo9O2XY/gU=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [REF = _t, ID = _t, ID_DESC = _t, DATE = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"REF", type text}, {"ID", Int64.Type}, {"ID_DESC", type text}, {"DATE", type text}}),
        #"Changed Type with Locale" = Table.TransformColumnTypes(#"Changed Type", {{"DATE", type date}}, "en-GB"),
        #"Grouped Rows" = Table.Group(#"Changed Type with Locale", {"REF"}, {{"AllRows", each _, type table [REF=nullable text, ID=nullable number, ID_DESC=nullable text, DATE=nullable date]}}),
        #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Max([AllRows], "DATE")),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"AllRows"}),
        #"Expanded Custom" = Table.ExpandRecordColumn(#"Removed Columns", "Custom", {"ID", "ID_DESC", "DATE"}, {"ID", "ID_DESC", "DATE"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Custom",{{"ID", Int64.Type}, {"ID_DESC", type text}, {"DATE", type date}})
    in
        #"Changed Type1"

     

    Also see this article. How to Group By Maximum Value using Table.Max - Power Query (gorilla.bi)

     

    Pat

     

3 Replies

  • aJamie , Try a new Table

    filter(addcolumn(Table, "_max" , maxx(filter(Table, [REF] =earlier([REF])),[ID])), [ID] =_max)

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    Here's one way to do it in the query editor.  To see how it works, just create a blank query, open the Advanced Editor and replace the text there with the M code below.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hZJLEoQgDETvwtoqAwQcln7BM1je/xoT0BqiI7jpRepVd0izbUJq0Nq1oEQjjPuQ9n1PqjTNWgVKir25YtYC6TAMEVN3DKU83ZTLbljGsMtuFayLoeM4Pu7GMEk6TdOLmzOk8zy/YZZ0WZaImQoWn+C9r7sddwshkALNdAFLu63r+oRJQHq8SaH5vBWMl0WLFbEUepz3H0NNI/yd9+z0Xj3HbPmHMIyFVjCLkDutYOmHFDplWAo9O2XY/gU=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [REF = _t, ID = _t, ID_DESC = _t, DATE = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"REF", type text}, {"ID", Int64.Type}, {"ID_DESC", type text}, {"DATE", type text}}),
        #"Changed Type with Locale" = Table.TransformColumnTypes(#"Changed Type", {{"DATE", type date}}, "en-GB"),
        #"Grouped Rows" = Table.Group(#"Changed Type with Locale", {"REF"}, {{"AllRows", each _, type table [REF=nullable text, ID=nullable number, ID_DESC=nullable text, DATE=nullable date]}}),
        #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Max([AllRows], "DATE")),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"AllRows"}),
        #"Expanded Custom" = Table.ExpandRecordColumn(#"Removed Columns", "Custom", {"ID", "ID_DESC", "DATE"}, {"ID", "ID_DESC", "DATE"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Custom",{{"ID", Int64.Type}, {"ID_DESC", type text}, {"DATE", type date}})
    in
        #"Changed Type1"

     

    Also see this article. How to Group By Maximum Value using Table.Max - Power Query (gorilla.bi)

     

    Pat