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 |
ronrsnfld
Super User
3 years agoIf 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