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

PowerBI折线图中同时展示小时价格与每日均价的实现方法

解决PowerBI中小时级折线图同时展示每日均价的问题

问题描述

我有一张展示指数每小时价格的折线图,想在同图中添加每日价格平均值。已经计算了对应的度量值,但添加到小时级图表后,平均值变成了小时级(每个小时都计算一次,而非整日均一值)。示例数据如下:

日期小时价格每日均价
2023/1/11100150
2023/1/12150150
2023/1/13200150
2023/1/215060
2023/1/226060
2023/1/237060

需要实现的效果是:折线图中同时显示小时级的「price」折线,以及每日固定值的「daily_average」折线(每个日期下所有小时的均价一致)。

解决方案

问题核心是度量值的上下文过滤:当把度量值放到小时级图表中时,小时维度会自动过滤计算上下文,导致平均值按小时重新计算。需要修改度量值,强制忽略小时维度,仅基于日期维度计算每日均价。

方法1:使用ALL函数清除小时上下文

创建(或修改)每日均价的度量值,用ALL函数移除小时列的筛选影响:

每日均价 = 
CALCULATE(
    AVERAGE('表名'[价格]),
    ALL('表名'[小时])
)
  • 原理:ALL('表名'[小时])会清除当前上下文对「小时」列的筛选,让计算基于整个日期的所有小时数据求平均,因此每个日期下的所有小时都会返回同一个均价。

方法2:使用ALLEXCEPT保留日期上下文

如果数据模型中有单独的日期表,或者想更精准地保留日期筛选,可使用ALLEXCEPT:

每日均价 = 
CALCULATE(
    AVERAGE('表名'[价格]),
    ALLEXCEPT('表名', '表名'[日期])
)
  • 原理:ALLEXCEPT('表名', '表名'[日期])会清除除了「日期」之外的所有筛选上下文,确保计算仅受日期维度影响,忽略小时等其他维度的筛选。

方法3:使用SUMMARIZE预聚合每日均价

如果需要更直观的预计算,也可以先创建一个每日均价的汇总表,再关联到原表:

  1. 创建计算表:
每日均价表 = 
SUMMARIZE(
    '表名',
    '表名'[日期],
    "每日均价", AVERAGE('表名'[价格])
)
  1. 将原表的「日期」列与新表的「日期」列建立关系
  2. 在折线图中直接使用新表的「每日均价」字段

验证效果

修改度量值后,将「price」和「每日均价」同时添加到折线图的「值」区域,X轴保持为「日期+小时」(或小时级时间轴),即可看到:

  • 「price」折线展示每个小时的价格波动
  • 「每日均价」折线为每日一条水平直线,同一日期下所有小时的均价一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:05:29