我希望在组内而不是整个数据集内运行总计MaxDurationOrder。我有适用于所有行的以下公式:
= Table.AddColumn(#"Added Index", "Running Total", each List.Sum(List.FirstN(#"Added Index"[MaxDurationOrder],[Index])))
但是我的数据集中确实有一个选项1,选项2,选项3的列,我希望将运行总计用于划分。如何在每个选项中获得运行总计?
答案 0 :(得分:1)
添加索引。使用下面的代码添加自定义列,如果该列具有较低的索引和相同的GroupColumn,则该列将增加MaxDurationOrder
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index","RunningTotal",(i)=>List.Sum(Table.SelectRows(#"Added Index", each [GroupColumn]=i[GroupColumn] and [Index]<=i[Index]) [MaxDurationOrder]), type number ),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index"})
in #"Removed Columns"
或者,分为两部分,创建函数fnRunningSum
(MyTable as table) =>
let Source = Table.Buffer(MyTable),
MyColumn="MaxDurationOrder",
MyColumn2=Table.Column(Source,MyColumn),
TableType = Value.Type(Table.AddColumn(Source, "Cumul", each null, type number)),
Cumulative = List.Skip(List.Accumulate(MyColumn2,{0},(cumulative,MyColumn) => cumulative & {List.Last(cumulative) + MyColumn})),
Cumu = Table.FromColumns(Table.ToColumns(Source)&{Cumulative},TableType)
in Cumu
使用功能分组,然后展开
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Sum = Table.Group(Source, {"GroupColumn"}, {{"AllData",fnRunningSum}}),
#"Expanded AllData" = Table.ExpandTableColumn(Sum, "AllData", {"MaxDurationOrder", "Cumul"}, {"MaxDurationOrder", "Cumul"})
in "Expanded AllData"