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

Power BI中按Category为多时间序列生成自增测试时间列求助

DAX方案:按Category生成从0开始的递增测试时间

核心思路

针对每个category分组,计算当前行之前所有Steps的累计总和,让第一个行的测试时间为0,后续行依次累加前序Steps值,实现按category独立递增的时间序列。

基础DAX计算列代码

假设你的数据表名为合并后的时间序列表,直接创建计算列(不是度量值),代码如下:

测试时间 = 
VAR 当前分类 = '合并后的时间序列表'[category]
VAR 当前步骤值 = '合并后的时间序列表'[Steps]
VAR 前序步骤总和 = 
    CALCULATE(
        SUM('合并后的时间序列表'[Steps]),
        FILTER(
            ALL('合并后的时间序列表'),
            '合并后的时间序列表'[category] = 当前分类 && '合并后的时间序列表'[Steps] < 当前步骤值
        )
    )
RETURN IF(ISBLANK(前序步骤总和), 0, 前序步骤总和)

代码解释

  • 当前分类:捕获当前行的category,确保只在同一分类内计算
  • 当前步骤值:标记当前行的Steps,用于筛选该分类下更早的步骤
  • 前序步骤总和:通过CALCULATE+FILTER筛选同一分类中Steps小于当前值的所有行,求和得到累计时间
  • 返回逻辑:如果是分类的第一行(无前置步骤),返回0;否则返回累计的前序步骤总和

进阶处理:Steps重复的情况

如果同一分类下存在相同的Steps值,仅靠Steps排序会出错,建议先在Power Query中给数据表添加索引列(行号),再用以下代码:

测试时间 = 
VAR 当前分类 = '合并后的时间序列表'[category]
VAR 当前行号 = '合并后的时间序列表'[索引]
VAR 前序步骤总和 = 
    CALCULATE(
        SUM('合并后的时间序列表'[Steps]),
        FILTER(
            ALL('合并后的时间序列表'),
            '合并后的时间序列表'[category] = 当前分类 && '合并后的时间序列表'[索引] < 当前行号
        )
    )
RETURN IF(ISBLANK(前序步骤总和), 0, 前序步骤总和)

注意事项

  1. 确保Steps列是数值类型(如整数、小数),如果是时间格式,先转换成秒数(例如:SECOND([时间列]) + MINUTE([时间列])*60 + HOUR([时间列])*3600)
  2. 替换代码中的合并后的时间序列表为你实际的数据表名称
  3. 计算列会随数据刷新自动更新,适合静态或增量更新的数据集

内容的提问来源于stack exchange,提问作者Woncheol Chang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:27:46