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"