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

求Power BI/DAX实现度量值列的累计运行总计方案

Power BI 温度数据累计分布(运行总计百分比)实现方案

嘿,卡了三天确实够闹心的——按日期排名肯定走偏了,累计分布图的核心是按温度值本身的大小来累计,跟日期半毛钱关系都没有!咱们一步步来把这个搞定:

第一步:确认基础度量值正确性

先确保你用来计算单温度占比的基础度量是对的,要是基础错了,后面全白搭:

  • 统计单温度出现次数:
    温度出现次数 = COUNT('你的温度表名'[温度])
    
  • 计算全局总记录数(如果需要支持切片器筛选,把ALL改成ALLSELECTED):
    总温度记录数 = CALCULATE(COUNT('你的温度表名'[温度]), ALL('你的温度表名'))
    
  • 单温度占总记录的百分比:
    温度占比 = DIVIDE([温度出现次数], [总温度记录数], 0)
    
    用DIVIDE是为了避免除以0的错误,最后那个0是除数为0时的默认值。

第二步:创建温度维度表(关键!)

直接用原表的温度列做累计很容易出上下文冲突,最好建一个去重的温度维度表,用来做排序和筛选:

  1. 切换到「建模」选项卡,点击「新建表」
  2. 输入以下DAX生成去重温度表:
    温度维度表 = SUMMARIZE('你的温度表名', '你的温度表名'[温度])
    
  3. 给这个表的「温度」列设置升序排序(右键列 → 排序 → 升序)
  4. 到「模型」视图,把原表的「温度」字段拖到维度表的「温度」字段上,建立一对多关系

第三步:制作累计百分比度量值

这一步是核心,用CALCULATE+FILTER筛选出所有小于等于当前温度的记录,累加它们的占比:

累计温度占比 = 
CALCULATE(
    [温度占比],
    FILTER(
        ALL('温度维度表'[温度]),
        '温度维度表'[温度] <= MAX('温度维度表'[温度])
    )
)
  • ALL('温度维度表'[温度]):用来忽略当前行的温度上下文,确保能遍历所有温度值
  • '温度维度表'[温度] <= MAX('温度维度表'[温度]):筛选出小于等于当前可视化中温度值的所有温度
  • CALCULATE:把筛选后的上下文应用到「温度占比」度量上,求和得到累计值

第四步:可视化设置

  1. 新建一个折线图(或者面积图,看你偏好)
  2. X轴选择「温度维度表」里的「温度」字段
  3. Y轴选择刚刚做的「累计温度占比」度量
  4. 如果想同时看单温度的分布,可以把「温度占比」也拖到Y轴,把它的可视化类型改成柱状图,这样就能看到柱状的单温度占比+折线的累计占比,完美呈现累计分布

关于你之前的排名报错

你之前按日期排名完全搞错了方向——累计分布是看「低于某个温度的记录占总记录的比例」,所以必须按温度值从小到大来累计,而不是按时间顺序。用温度维度表来做排序和筛选,就能避开之前的排名错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:12:55