Power Query - Pivot Table / 按特定过滤器分组
Power Query - Pivot Table / Group by specific filters
我今天在这里已经回答了一个类似的问题,但这个问题更复杂。
我通过使用一般的 Group By Function 自己尝试了它,但它没有像我想要的那样工作。
我有一个像这样的 table:
现在我想要一个 table 给我看
- 数量基于 Key 1 和 Key 2 的最大值
- 状态为“A2”的最新日期
结果如下:
如何使用 Power Query 做到这一点?
如果我理解正确的话:
已编辑以更正逻辑缺陷
重新编辑以更正规范
重新编辑以添加一些注释,并改进数据输入
let
Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{
{"Order Number", Int64.Type},
{"Key 1", Int64.Type}, {"Key 2", Int64.Type},
{"Status", type text}, {"Quantity 1", Int64.Type},
{"Date", type date}}),
//blank the Date if Status = A1_
blankDate = Table.FromRecords(Table.TransformRows(#"Changed Type",
(r)=> Record.TransformFields(r, {"Date", each if r[Status]="A1" then null else _})),
type table[Order Number=Int64.Type, Key 1=Int64.Type, Key 2=Int64.Type, Quantity 1=Int64.Type, Date= Date.Type]),
//Group rows by Order Number
//then Sort by Key 1 followed by Key 2; select the first row (highest rank) for the Date and Quantity
#"Grouped Rows" = Table.Group(blankDate, {"Order Number"}, {
{"filtered", each Table.Sort(_,{{"Key 1", Order.Descending}, {"Key 2", Order.Descending}}){0}, type record}
}),
#"Expanded filtered" = Table.ExpandRecordColumn(#"Grouped Rows", "filtered", {"Quantity 1", "Date"}, {"Quantity 1", "Date"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded filtered",{{"Quantity 1", Int64.Type}, {"Date", type date}})
in
#"Changed Type1"
我今天在这里已经回答了一个类似的问题,但这个问题更复杂。
我通过使用一般的 Group By Function 自己尝试了它,但它没有像我想要的那样工作。
我有一个像这样的 table:
现在我想要一个 table 给我看
- 数量基于 Key 1 和 Key 2 的最大值
- 状态为“A2”的最新日期
结果如下:
如何使用 Power Query 做到这一点?
如果我理解正确的话:
已编辑以更正逻辑缺陷
重新编辑以更正规范
重新编辑以添加一些注释,并改进数据输入
let
Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{
{"Order Number", Int64.Type},
{"Key 1", Int64.Type}, {"Key 2", Int64.Type},
{"Status", type text}, {"Quantity 1", Int64.Type},
{"Date", type date}}),
//blank the Date if Status = A1_
blankDate = Table.FromRecords(Table.TransformRows(#"Changed Type",
(r)=> Record.TransformFields(r, {"Date", each if r[Status]="A1" then null else _})),
type table[Order Number=Int64.Type, Key 1=Int64.Type, Key 2=Int64.Type, Quantity 1=Int64.Type, Date= Date.Type]),
//Group rows by Order Number
//then Sort by Key 1 followed by Key 2; select the first row (highest rank) for the Date and Quantity
#"Grouped Rows" = Table.Group(blankDate, {"Order Number"}, {
{"filtered", each Table.Sort(_,{{"Key 1", Order.Descending}, {"Key 2", Order.Descending}}){0}, type record}
}),
#"Expanded filtered" = Table.ExpandRecordColumn(#"Grouped Rows", "filtered", {"Quantity 1", "Date"}, {"Quantity 1", "Date"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded filtered",{{"Quantity 1", Int64.Type}, {"Date", type date}})
in
#"Changed Type1"