已更改数据源地址,版主能说一说输出数据这张表的生成步骤吗?先谢谢了。
先看数据表let
源=Excel.Workbook(File.Contents("Z:\周度例子1.xlsx"), null, true), '这步用来获取文件中所有的sheet,
预算0=源{[Item=分类 &"耗预算",Kind="Sheet"]}[Data],'这两步从上面的源里获取相应sheet的数据.其中的"分类"是一个自定义的参数,因为处理水,热的步骤是相同的,所以这里用参数代替,便于批处理
实际=源{[Item=分类,Kind="Sheet"]}[Data], 同上
预算 = Table.PromoteHeaders(预算0, [PromoteAllScalars=true]),'增加标题行
标题行 = Table.PromoteHeaders(实际, [PromoteAllScalars=true]),'同上
获取年周 = Table.AddColumn(标题行, "年周", each Date.Year([日期])*100 +Date.WeekOfYear([日期]),Int64.Type),
重命名的列 = Table.RenameColumns(获取年周,{{"合计热耗", "合计"},{"合计水耗", "合计"}},MissingField.Ignore),'这步将 列名 合计水耗,合计电耗统一成合计,便于进一步处理
汇总 = Table.Group(重命名的列, {"年周"}, {{"实耗", each List.Sum([合计]), type number}}),'这步根据年周汇总实际消耗
合并的查询 = Table.NestedJoin(汇总, {"年周"}, 产量, {"年周"}, "产量", JoinKind.LeftOuter),'这步从产量表获取年周对应的产量
#"展开的“产量”" = Table.ExpandTableColumn(合并的查询, "产量", {"产量"}),
已添加自定义 = Table.AddColumn(#"展开的“产量”", "实际", each [实耗]/[产量]),'计算出耗率
合并的查询1 = Table.NestedJoin(已添加自定义, {"年周"}, 预算, {"年周"}, "预算", JoinKind.LeftOuter),'从预算表获取对应年周的预算
#"展开的“预算”" = Table.ExpandTableColumn(合并的查询1, "预算", {"预算"}),
删除的列 = Table.RemoveColumns(#"展开的“预算”",{"实耗", "产量"})
in
删除的列
然后根据这个带参数的表生成一个自定义函数
再从输出数据表调用这个自定义函数,就可以生成最终需要的数据了.
let
源 = {"热","水"},
转换为表 = Table.FromList(源, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
已调用自定义函数 = Table.AddColumn(转换为表, "获取数据", each 获取数据([Column1])),
#"展开的“获取数据”" = Table.ExpandTableColumn(已调用自定义函数, "获取数据", {"年周", "实际", "预算"}, {"年周", "实际", "预算"}),
重命名的列 = Table.RenameColumns(#"展开的“获取数据”",{{"Column1", "分类"}}),
已添加条件列 = Table.AddColumn(重命名的列, "是否超预算", each if [实际] > [预算] then "超预算" else "预算内"),
更改的类型 = Table.TransformColumnTypes(已添加条件列,{{"实际", type number}, {"预算", type number}})
in
更改的类型 |