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

Power BI新手求助:如何对高分辨率数据表按区间求平均生成子集表

Power BI按区间求平均生成子集的最优方案

不需要循环,用DAX的聚合函数就能高效处理4万行数据,两种方案都能满足你的需求:

方案一:用SUMMARIZE实现(推荐)

先给每行数据打上区间标签,再按区间分组求平均,逻辑直观且性能稳定:

子集表 = 
VAR 带区间的原始数据 = 
    ADDCOLUMNS(
        '原始数据',
        "区间", INT('原始数据'[数值列]/10)*10 // 这里的10是区间步长,按需调整,比如改成5就是每5个单位一个区间
    )
RETURN
    SUMMARIZE(
        带区间的原始数据,
        [区间],
        "平均测量值", AVERAGE('原始数据'[测量值]) // 替换成你要求平均的列名
    )

方案二:用SELECTCOLUMNS + CALCULATE实现

完全符合你提到的函数组合,先提取所有唯一区间,再用CALCULATE筛选对应区间计算平均值:

子集表 = 
SELECTCOLUMNS(
    // 先获取所有不重复的区间
    DISTINCT(ADDCOLUMNS('原始数据', "区间", INT('原始数据'[数值列]/10)*10)),
    "区间", [区间],
    "平均测量值", CALCULATE(AVERAGE('原始数据'[测量值]))
)

自定义非等步长区间的处理

如果你的区间不是等步长(比如0-10、10-25、25-50这种),可以先新建一个区间映射表,包含「区间起始值」「区间结束值」「区间名称」三列,然后用LOOKUPVALUE给原始数据匹配对应区间,再用上面的方法分组聚合:

带自定义区间的原始数据 = 
ADDCOLUMNS(
    '原始数据',
    "区间名称", 
    LOOKUPVALUE(
        '区间映射表'[区间名称],
        '区间映射表'[区间起始值], MAX('区间映射表'[区间起始值]) <= '原始数据'[数值列],
        '区间映射表'[区间结束值], MIN('区间映射表'[区间结束值]) >= '原始数据'[数值列]
    )
)

不管哪种方案,都比循环高效得多——DAX是基于集合运算的语言,专门处理这种批量数据聚合场景,4万行数据完全能快速计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:08:25