Power Query 中是不是有一种方法可以根据基于文本值重置的两列计算运行总计?

Posted

技术标签:

【中文标题】Power Query 中是不是有一种方法可以根据基于文本值重置的两列计算运行总计?【英文标题】:Is there a way in Power Query to calculate a running total based upon two columns that resets based on a text value?Power Query 中是否有一种方法可以根据基于文本值重置的两列计算运行总计? 【发布时间】:2019-04-10 18:51:21 【问题描述】:

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

我可以为整个列创建一个运行总计,但我不知道如何在每次 ClosedMonth 等于四月/会计年度更改时重置总计。

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

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

【问题讨论】:

【参考方案1】:

创建名为 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"

【讨论】:

以上是关于Power Query 中是不是有一种方法可以根据基于文本值重置的两列计算运行总计?的主要内容,如果未能解决你的问题,请参考以下文章

Power Query 表中的网络流数据库

power query展开表时动态获取要展开的列

powerquery中使用原始列名作为前缀 啥意思?

Power Query 根据另一列转换一列

根据列表值在 Power Query 中创建条件列

Power Query:根据其他列替换值