我正在构建以下电源查询。
输入报告基于MYOB的摘录 - 经过几个步骤,这就是它的样子。
最终结果需要是基于类别的分组。但是,我无法确定如何将“小时”列中的值与“小时:”类别相对应,以与正确的类别对齐。
EG。基本每小时359.55美元和小时数= 15,洗衣津贴$ 2.40小时 = 2。
此外,在某些情况下,“小时:”类别的小时数会显示在值列中。
答案 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"