电源查询类别分组

时间:2017-09-25 23:34:02

标签: excel powerquery

我正在构建以下电源查询。

输入报告基于MYOB的摘录 - 经过几个步骤,这就是它的样子。

enter image description here

最终结果需要是基于类别的分组。但是,我无法确定如何将“小时”列中的值与“小时:”类别相对应,以与正确的类别对齐。

  

EG。基本每小时359.55美元和小时数= 15,洗衣津贴$ 2.40小时   = 2。

这是输出需要的: enter image description here

此外,在某些情况下,“小时:”类别的小时数会显示在值列中。

1 个答案:

答案 0 :(得分:1)

根据您的示例,下面的查询返回所需的结果。 在查询中,来自每个下一记录的数据(小时)与来自每个当前记录的数据(类别,值)组合(通过添加2个索引并将表与自身连接)。 否则,查询应该是自解释的。

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"