You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Power BI中如何对时间类型列执行求和聚合操作?

解决Power BI中时间类型Duration列无法求和的问题

我太懂你这个困扰了——把SQL Server里的time类型Duration字段导入Power BI后,想做个按Phase分组的时长总和条形图,结果发现Duration字段只能选计数、非重复计数,根本找不到求和选项。这其实是Power BI的默认逻辑导致的:它把time类型识别成单个时间点,而不是可累加的时长数值,自然不会提供求和的聚合方式。

你提到已经在TBL1里加了DurationMeasure度量值,这里给你一个能完美解决问题的标准DAX公式,以及使用说明:

正确的Duration总和度量值写法

DurationMeasure = 
VAR TotalSeconds = SUMX(TBL1, HOUR(TBL1[Duration])*3600 + MINUTE(TBL1[Duration])*60 + SECOND(TBL1[Duration]))
VAR Hours = INT(TotalSeconds / 3600)
VAR RemainingSeconds = MOD(TotalSeconds, 3600)
VAR Minutes = INT(RemainingSeconds / 60)
VAR Seconds = MOD(RemainingSeconds, 60)
RETURN
FORMAT(Hours, "00") & ":" & FORMAT(Minutes, "00") & ":" & FORMAT(Seconds, "00")

这个度量值的工作逻辑:

  • 第一步把每条记录的Duration拆解成小时、分钟、秒,转换成总秒数——只有数值类型才能被SUMX累加
  • 再把累加后的总秒数转换回大家熟悉的HH:MM:SS格式,保证可读性

条形图的配置步骤

  1. Phase字段拖到条形图的区域,用来分组
  2. 把你创建好的DurationMeasure拖到区域,这时就能看到每个Phase对应的总时长了

额外实用提示

  • 如果你的Duration有超过24小时的情况,这个公式完全能hold住,因为它是基于总秒数计算的,不会像原生time类型那样被截断成24小时以内
  • 要是你需要在表格可视化里也展示总时长,直接把这个度量值拖到表格列里就行
  • 以后如果再遇到类似的时间类型转时长求和的需求,这个思路通用:先转成可累加的数值(秒/分钟),再转回时间格式

内容的提问来源于stack exchange,提问作者Filip Popović

火山引擎 最新活动