You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI中为非连续日期添加月度重置的MTD累计计数列

在Power BI中计算非连续工作日的MTD累计天数(每月重置)

针对你遇到的非连续Bus_Day日期无法用DATEDIFF计算MTD累计的问题,提供两种可行方案:

方案1:DAX计算列

直接通过筛选同年同月且小于等于当前日期的Bus_Day行数实现累计,自动在每月首个工作日重置为1。

将以下代码替换表名后作为计算列添加:

MTD Day = 
VAR 当前年月 = YEAR([Bus_Day]) * 100 + MONTH([Bus_Day])
RETURN
CALCULATE(
    COUNTROWS('你的表名'),
    FILTER(
        '你的表名',
        YEAR([Bus_Day]) * 100 + MONTH([Bus_Day]) = 当前年月 &&
        [Bus_Day] <= EARLIER([Bus_Day])
    )
)

原理:用当前年月变量标记每行所属的年月区间,通过CALCULATE+FILTER筛选出同区间内日期不晚于当前行的所有Bus_Day,COUNTROWS统计的数量就是累计天数,每月第一行只会统计自身,自然得到1。

方案2:Power Query(M语言)预处理

如果希望在数据加载阶段完成计算,可通过分组加索引的方式实现:

  1. 打开Power Query编辑器,加载你的Bus_Day表
  2. 按Bus_Day升序排序(确保日期顺序正确)
  3. 添加如下M代码步骤(替换数据源):
let
    源 = 你的数据源,
    按日期排序 = Table.Sort(源,{{"Bus_Day", Order.Ascending}}),
    添加年月标识 = Table.AddColumn(按日期排序, "年月", each Date.Year([Bus_Day])*100 + Date.Month([Bus_Day])),
    分组并生成索引 = Table.Group(添加年月标识, {"年月"}, {{"分组数据", each Table.AddIndexColumn(_, "MTD Day", 1, 1), type table}}),
    展开数据 = Table.ExpandTableColumn(分组并生成索引, "分组数据", {"Bus_Day", "MTD Day"}, {"Bus_Day", "MTD Day"}),
    清理列 = Table.RemoveColumns(展开数据,{"年月"})
in
    清理列

原理:先给每行标记年月组合,再按年月分组,对每个分组添加从1开始的索引,索引值就是当月累计天数,自动实现每月重置。

内容的提问来源于stack exchange,提问作者Brian Samson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:25:43