Forum Discussion
omarelmb123
Helper I
3 years agoPower Query : customize column that count number of rows for each ROW
Hello everyone, i want to execute this query I have product table with 3 columns ( Product Key, Date , sold ) We can find for one unique productKey many records for different date values. ...
- 3 years ago
If I understand properly, you can do this in PQ by
- Group by Product Key
- Count the number of YES in each group
- Re-expand the table
Note that your example seems to be incorrect
- 31/2/2000 is not a valid date
- Key A3 only has a count of one (1), not three(3)
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEystQ30jcyMDIAsiNdg5VidaAShkb6BoYgGUNkGSOQjCGSjJ8/RMIYZBZQwhhDiwlIxginjDG6TCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Product Key" = _t, Date = _t, Sold = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{ {"Product Key", type text}, {"Date", type date}, {"Sold", type text}}, "en-150"), #"Grouped Rows" = Table.Group(#"Changed Type", {"Product Key"}, { {"All", each _, type table [Product Key=nullable text, Date=nullable date, Sold=nullable text]}, {"Count", each List.Count(List.RemoveItems(_[Sold],{"NO"})), Int64.Type} }), #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Date", "Sold"}, {"Date", "Sold"}) in #"Expanded All"Data
Results
- 3 years ago
Sorry about that.
The new line should have been:
{"Last Date Sold", (t)=> List.Max(Table.SelectRows(t, each [Sold] = "YES")[Date]), type date}
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEystQ30jcyMDIAsiNdg5VidaAShkb6BoYgGUNkGSOQjCGSjJ8/RMIYZBZQwhhDiwlIxginjDG6TCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Product Key" = _t, Date = _t, Sold = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{ {"Product Key", type text}, {"Date", type date}, {"Sold", type text}}, "en-150"), #"Grouped Rows" = Table.Group(#"Changed Type", {"Product Key"}, { {"All", each _, type table [Product Key=nullable text, Date=nullable date, Sold=nullable text]}, {"Count", each List.Count(List.RemoveItems(_[Sold],{"NO"})), Int64.Type}, {"Last Date Sold", (t)=> List.Max(Table.SelectRows(t, each [Sold] = "YES")[Date]), type date} }), #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Date", "Sold"}, {"Date", "Sold"}) in #"Expanded All"
omarelmb123
Helper I
3 years agoHello, that's an exemple of data set and result desired.
| Product Key | Date | Sold | Count (Output wanted) |
| A1 | 31/2/2020 | YES | 2 |
| A1 | 12/01/2021 | YES | 2 |
| A2 | 11/01/2021 | NO | 0 |
| A3 | 21/03/2021 | YES | 3 |
| A4 | 22/03/2021 | YES | 3 |
| A4 | 23/03/2021 | YES | 3 |
- ronrsnfld3 years ago
Super User
If I understand properly, you can do this in PQ by
- Group by Product Key
- Count the number of YES in each group
- Re-expand the table
Note that your example seems to be incorrect
- 31/2/2000 is not a valid date
- Key A3 only has a count of one (1), not three(3)
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEystQ30jcyMDIAsiNdg5VidaAShkb6BoYgGUNkGSOQjCGSjJ8/RMIYZBZQwhhDiwlIxginjDG6TCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Product Key" = _t, Date = _t, Sold = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{ {"Product Key", type text}, {"Date", type date}, {"Sold", type text}}, "en-150"), #"Grouped Rows" = Table.Group(#"Changed Type", {"Product Key"}, { {"All", each _, type table [Product Key=nullable text, Date=nullable date, Sold=nullable text]}, {"Count", each List.Count(List.RemoveItems(_[Sold],{"NO"})), Int64.Type} }), #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Date", "Sold"}, {"Date", "Sold"}) in #"Expanded All"Data
Results
- omarelmb1233 years ago
Helper I
thank you it worked, Can you pls tell me how to get the last day of sold product ?
- ronrsnfld3 years ago
Super User
It would be the Max of the date column, either in the grouping aggregations or relative to the entire table depending on what you want for a result and how you want it presented.