首页 > 解决方案 > Power Query 中是否有一种方法可以根据基于文本值重置的两列计算运行总计?

问题描述

我正在尝试在 Power Query 中为每个财政年度的每个月创建一个运行总计,该总计在新财政年度开始时重置。

我可以为整个列创建一个运行总计,但我无法弄清楚每次 ClosedMonth 等于 4 月/会计年度更改时如何重置总计。

我想在 Power Query 中执行此操作,因为我正在从数据库加载数据,并且希望表在每天安排 Power BI 刷新时自动更新。

当前表称为每月总和

我试图为运行总计列实现的结果是:

所需的列结果

标签: powerbipowerquery

解决方案


创建名为 fnAddRunningSum 的函数

(MyTable as table) as table =>
//see:  https://community.powerbi.com/t5/Desktop/How-to-do-a-running-Sum-by-group-in-Power-Query/td-p/290123
let Source = Table.Buffer(MyTable),
TableType = Value.Type(Table.AddColumn(Source, "Running Sum", each null, type number)),
Cumulative = List.Accumulate(Source[Count],{},(cumulative,amount) => cumulative & {List.Last(cumulative, 0) + amount}),
AddedRunningSum = Table.FromColumns(Table.ToColumns(Source)&{Cumulative},TableType)
in AddedRunningSum

然后创建查询

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped" = Table.Group(Source, {"ClosedFiscalYear"}, {{"AllData", fnAddRunningSum}}),
#"Expanded AllData" = Table.ExpandTableColumn(#"Grouped", "AllData", {"ClosedMonth", "Count", "Index", "Running Sum"}, {"ClosedMonth", "Count", "Index", "Running Sum"})
in #"Expanded AllData"

推荐阅读