Forum Discussion
Anonymous
7 years agoNot applicable
Power Query - Sum by Category WITHOUT Grouping
Hi, I have a table that has the total population figures for a specific demographic across 5 cities for 2017, 2018 and 2019. I want to work out the percentage of population each city has for each...
- 7 years ago
Hi Anonymous,
you can group the table and then join it back with the original one.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0MgaSRgaG5kqxOjAhU4iQBULI2AAiZAkWcgJzDJA1goSMYUIWcCETA4TGWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Market = _t, Population = _t, Year = _t]), ChangedType = Table.TransformColumnTypes(Source,{{"Market", type text}, {"Population", Int64.Type}, {"Year", Int64.Type}}), // group by year and sum population Aggs = Table.Group(ChangedType, "Year", {"Total Population per Year", each List.Sum([Population])}), // rename Year to AggsYear in the table Aggs RenameAggsYear = Table.RenameColumns(Aggs, {{"Year", "AggsYear"}}), // join source table with aggregations JoinWithAggs = Table.Join(ChangedType, "Year", RenameAggsYear, "AggsYear", JoinKind.Inner), // remove column AggsYear RemoveAggsYearColumn = Table.RemoveColumns(JoinWithAggs, "AggsYear") in RemoveAggsYearColumnAnd the result:
Next time, please provide also same sample data that we can import. It simplifies the work. Thank you :smileyhappy:
Nolock
7 years agoResident Rockstar
Hi Anonymous,
you can group the table and then join it back with the original one.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0MgaSRgaG5kqxOjAhU4iQBULI2AAiZAkWcgJzDJA1goSMYUIWcCETA4TGWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Market = _t, Population = _t, Year = _t]),
ChangedType = Table.TransformColumnTypes(Source,{{"Market", type text}, {"Population", Int64.Type}, {"Year", Int64.Type}}),
// group by year and sum population
Aggs = Table.Group(ChangedType, "Year", {"Total Population per Year", each List.Sum([Population])}),
// rename Year to AggsYear in the table Aggs
RenameAggsYear = Table.RenameColumns(Aggs, {{"Year", "AggsYear"}}),
// join source table with aggregations
JoinWithAggs = Table.Join(ChangedType, "Year", RenameAggsYear, "AggsYear", JoinKind.Inner),
// remove column AggsYear
RemoveAggsYearColumn = Table.RemoveColumns(JoinWithAggs, "AggsYear")
in
RemoveAggsYearColumnAnd the result:
Next time, please provide also same sample data that we can import. It simplifies the work. Thank you :smileyhappy: