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

Power BI中如何按连续序列生成A/B类别的数值范围表?

Power BI 拆分连续error序列的解决方案

核心思路是先给每个连续相同error值的序列分配唯一组ID,再基于组ID实现聚合拆分,全程用DAX完成,无需Python。

需求1:按连续A/B序列输出MIN和MAX seq num

步骤1:添加组ID计算列

在原表中新建计算列GroupID,用于标记每个连续序列:

GroupID = 
VAR 当前error = '你的表名'[error]
VAR 上一行error = 
    CALCULATE(
        MAX('你的表名'[error]),
        FILTER(
            '你的表名',
            '你的表名'[seq num] = EARLIER('你的表名'[seq num]) - 1
        )
    )
VAR 是否新组 = IF(当前error <> 上一行error || ISBLANK(上一行error), 1, 0)
RETURN
    SUMX(
        FILTER('你的表名', '你的表名'[seq num] <= EARLIER('你的表名'[seq num])),
        [是否新组]
    )

注:如果seq num不是连续整数(比如日期、非连续编号),先添加行号列排序,再将上述公式中的seq num替换为行号:

行号 = RANKX('你的表名', '你的表名'[seq num], , ASC, DENSE)

步骤2:生成连续序列MIN/MAX表

用DAX创建新表,按error和GroupID聚合:

连续序列MIN_MAX表 = 
SUMMARIZE(
    '你的表名',
    '你的表名'[error],
    '你的表名'[GroupID],
    "MIN_seq", MIN('你的表名'[seq num]),
    "MAX_seq", MAX('你的表名'[seq num])
)

该表会显示每个连续A/B序列的最小和最大seq num。

需求2:按A/B类别汇总连续数值范围

步骤1:格式化序列范围(可选)

在连续序列MIN_MAX表中新建计算列,将MIN和MAX合并为范围字符串:

序列范围 = [MIN_seq] & " - " & [MAX_seq]

步骤2:按error汇总连续范围

用DAX创建新表,将同一error下的所有连续范围合并:

按类别汇总连续范围表 = 
SUMMARIZE(
    '连续序列MIN_MAX表',
    '连续序列MIN_MAX表'[error],
    "连续范围列表", 
    CONCATENATEX(
        FILTER('连续序列MIN_MAX表', '连续序列MIN_MAX表'[error] = EARLIER('连续序列MIN_MAX表'[error])),
        [序列范围],
        ", "
    )
)

最终表会显示每个error对应的所有连续seq num范围,比如A对应1-3, 5-7。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:28