如何将DAX计算的HH:MM:SS时长列转为时间类型以实现求和?
DAX时长计算:将文本格式时长转为可求和的时间类型
你当前使用以下DAX公式生成HH:MM:SS格式的时长,但结果为文本类型,无法直接求和:
Adjusted Duration HHMMSS = VAR _hrs = QUOTIENT ( Total[Average Duration Adjusted] , 60 ) VAR _mins = INT (Total[Average Duration Adjusted] - _hrs * 60 ) VAR _sec = MOD ( Total[Average Duration Adjusted] , 1.0 ) * 60 RETURN FORMAT(_hrs,"00")&":"&FORMAT(_mins,"00")&":"&FORMAT(_sec,"00")
问题根源
FORMAT函数会将数值转为文本字符串,因此生成的列是文本类型,无法支持时间/数值类的聚合运算(比如求和)。不需要用TIMEVALUE反向转换文本,直接在计算时生成时间类型的值更高效。
解决方案:直接生成时间类型列
修改DAX公式,返回TIME类型值而非拼接文本,这样底层是可计算的数值(时间类型本质是代表一天比例的小数),同时可以通过格式设置保留HH:MM:SS的显示效果:
Adjusted Duration (Time Type) = VAR _totalMinutes = Total[Average Duration Adjusted] VAR _hrs = QUOTIENT(_totalMinutes, 60) VAR _mins = INT(_totalMinutes - _hrs * 60) VAR _sec = MOD(_totalMinutes, 1.0) * 60 RETURN TIME(_hrs, _mins, _sec)
使用说明
- 该公式生成的列属于时间类型,可直接用于求和、平均值等聚合运算。
- 在Power BI的字段属性中,将该列的格式设置为
时间->HH:MM:SS,即可显示为你需要的格式。 - 若需要同时保留文本格式的显示列和可计算的时间列,可以同时保留两个计算列:一个用于可视化展示,一个用于数据计算。
内容的提问来源于stack exchange,提问作者Dubya
相关产品推荐
相关产品推荐

