Power Query 类别分组
Power Query Category Grouping
我正在构建以下功率查询。
输入报告基于 MYOB 的摘录 - 经过几个步骤后,这就是它的样子。
最终结果需要是基于类别的分组。但是,我不知道如何根据类别 "Hours:" 移动小时列中的值以与正确的类别对齐。
Eg. Base Hourly 9.55 and Hours = 15, Laundry Allowance .40 Hours
= 2.
输出需要这样:
此外,在某些情况下,"hours:" 类别的小时数会显示在值列中。
根据您的示例,下面的查询 returns 需要的结果。
在查询中,每个下一条记录的数据(小时)与每个当前记录的数据(类别、值)组合(通过添加 2 个索引并将 table 与其自身连接)。
否则,查询应该是不言自明的。
let
Source = InputTable,
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index.1", 1, 1),
#"Merged Queries" = Table.NestedJoin(#"Added Index1",{"Index.1"},#"Added Index1",{"Index"},"Next",JoinKind.LeftOuter),
#"Expanded Next" = Table.ExpandTableColumn(#"Merged Queries", "Next", {"Category", "Value", "Hours"}, {"Next.Category", "Next.Value", "Next.Hours"}),
#"Sorted Rows" = Table.Sort(#"Expanded Next",{{"Index", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Hours", "Index", "Index.1"}),
#"Added Custom" = Table.AddColumn(#"Removed Columns", "Hours", each if [Next.Category] = "Hours:" then if [Next.Hours] = null then [Next.Value] else [Next.Hours] else null, Int64.Type),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Category] <> "Hours:") and ([Value] <> null or [Hours] <> null)),
#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows",{"Next.Category", "Next.Value", "Next.Hours"})
in
#"Removed Columns1"
我正在构建以下功率查询。
输入报告基于 MYOB 的摘录 - 经过几个步骤后,这就是它的样子。
最终结果需要是基于类别的分组。但是,我不知道如何根据类别 "Hours:" 移动小时列中的值以与正确的类别对齐。
Eg. Base Hourly 9.55 and Hours = 15, Laundry Allowance .40 Hours = 2.
输出需要这样:
此外,在某些情况下,"hours:" 类别的小时数会显示在值列中。
根据您的示例,下面的查询 returns 需要的结果。 在查询中,每个下一条记录的数据(小时)与每个当前记录的数据(类别、值)组合(通过添加 2 个索引并将 table 与其自身连接)。 否则,查询应该是不言自明的。
let
Source = InputTable,
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index.1", 1, 1),
#"Merged Queries" = Table.NestedJoin(#"Added Index1",{"Index.1"},#"Added Index1",{"Index"},"Next",JoinKind.LeftOuter),
#"Expanded Next" = Table.ExpandTableColumn(#"Merged Queries", "Next", {"Category", "Value", "Hours"}, {"Next.Category", "Next.Value", "Next.Hours"}),
#"Sorted Rows" = Table.Sort(#"Expanded Next",{{"Index", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Hours", "Index", "Index.1"}),
#"Added Custom" = Table.AddColumn(#"Removed Columns", "Hours", each if [Next.Category] = "Hours:" then if [Next.Hours] = null then [Next.Value] else [Next.Hours] else null, Int64.Type),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Category] <> "Hours:") and ([Value] <> null or [Hours] <> null)),
#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows",{"Next.Category", "Next.Value", "Next.Hours"})
in
#"Removed Columns1"