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

Power BI可视化:先按SESSIONID求和再计算ZVTCODE维度平均值

解决Power BI中分组条形图的“按SESSIONID求和后取平均值”需求

问题原因

你之前的方法错误在于:直接对HOURS求和后计算平均值,本质是所有HOURS行值的平均,而非先按SESSIONID汇总HOURS,再对这些汇总值取平均。要实现需求,需要先按SESSIONID聚合,再计算聚合结果的平均值。


方法一:使用DAX度量值(推荐,保留源数据灵活性)

步骤1:创建SESSION级别的求和度量值

在「数据」面板中,右键点击你的数据表 → 新建度量值,输入以下DAX代码(替换你的表名为实际表名):

SESSION_HOURS_TOTAL = SUM('你的表名'[HOURS])

这个度量值会在当前SESSIONID的上下文下,自动计算该会话的HOURS总和。

步骤2:创建ZVTCODE级别的平均度量值

再新建一个度量值,计算每个ZVTCODE下所有SESSION_HOURS_TOTAL的平均值:

HOURS_AVG = 
AVERAGEX(
    VALUES('你的表名'[SESSIONID]), // 获取当前ZVTCODE下的所有唯一SESSIONID
    [SESSION_HOURS_TOTAL] // 对每个SESSIONID计算HOURS总和
)

也可以合并为一个度量值:

HOURS_AVG = 
AVERAGEX(
    GROUPBY('你的表名', '你的表名'[ZVTCODE], '你的表名'[SESSIONID]),
    SUMX(CURRENTGROUP(), '你的表名'[HOURS])
)

步骤3:创建分组条形图

  • 将ZVTCODE拖到视觉对象的X轴
  • 将HOURS_AVG拖到Y轴
  • 选择「分组条形图」类型,即可得到目标结果。

方法二:用Power Query预处理数据(适合固定分析场景)

如果不需要保留源数据的明细,可以先在Power Query中完成两次分组计算:

  1. 打开Power Query编辑器,加载你的源数据
  2. 选中ZVTCODE和SESSIONID列,点击「转换」→「分组依据」:
    • 分组依据:选择ZVTCODE和SESSIONID
    • 新列名:HOURS_TOTAL
    • 操作:求和
    • 列:HOURS
  3. 得到SESSION级汇总表后,选中ZVTCODE列,再次点击「分组依据」:
    • 分组依据:ZVTCODE
    • 新列名:HOURS_AVG
    • 操作:平均值
    • 列:HOURS_TOTAL
  4. 点击「关闭并应用」,用新生成的表创建分组条形图即可。

结果验证

两种方法都会得到你需要的结果:

ZVTCODEHOURS_AVG
ZT_019.67
ZT_026.25

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:13:12