提问人:Gian Carlo 提问时间:11/14/2023 更新时间:11/17/2023 访问量:50
将小时数转换为持续时间 (HH:mm:ss) 格式 DAX
Converting Hour Numbers to Duration (HH:mm:ss) format DAX
问:
因此,我通过 PowerQuery 导入了这组数据,并将其加载到 Excel 工作簿的数据模型中。为了减少查询加载时间,我决定将大部分转换转移到数据模型而不是查询编辑器。现在,我有一个名为 [内部时间] 的字段,它以小时为单位存储两个时间戳之间的持续时间。我想找到一种方法将它们成功转换为 HH:mm:ss 格式的时间值。
如下表所示,有些转换是正确的,而有些则相差甚远
内部时间 | 内部时间(持续时间) |
---|---|
47.7 | 23:42:00 |
8.2 | 8:12:00 |
我使用的解决方案基本上是将第 1 列除以 24。
完整公式如下。有很多条件,但对于任何将要满足的条件,该值将除以 24。
=(IF([Create Time]>[Finish Time], [Create Time]-[Finish Time],
IF(AND([Internal Time]>0, [Internal Time]-[Weekends] >0), [Internal Time]-'Raw Data'[Weekends],
IF(AND([Internal Time]>0, [Internal Time]-[Weekends] <=0), [Internal Time],
IF(AND([Internal Time]<0, [Actual Duration] >0), [Actual Duration],
IF([Internal Time]=0, [Finish Time] - [Create Time]))))))/24
答:
1赞
Serge Inácio
11/14/2023
#1
这更像是一种解决方法。
注意:这仅在 31 天之前有效,如果有更多时间,则此计数器将重新启动。
它基于每月第一天的日期格式,在下面的示例中为 2000 年 1 月 1 日,并添加您的度量值 [内部时间]。然后,您可以通过显示天、小时、分钟和秒来使用它。
yourMeasure =
VAR DateHelper = DATE(2000,1,1)
Return
DateHelper +
DATE(
YEAR([Internal Time]/24),
MONTH([Internal Time]/24),
DAY([Internal Time]/24)
)+
TIME(
HOUR([Internal Time]/24),
MINUTE([Internal Time]/24),
SECOND([Internal Time]/24)
)
将此度量值添加到表/矩阵后,请确保将格式更改为“d hh:mm:ss”
评论
0赞
Gian Carlo
11/14/2023
你好。这样做的问题是它不应该是文本格式。我有一个类似的解决方案,但最终没有使用,因为我无法使用它来聚合结果值: =VAR _hours = INT([内部时间]) VAR _minutes = ROUND(([内部时间]-_hours)*60,0) 返回 _hours&“:”&_minutes&“:00”
0赞
Serge Inácio
11/14/2023
我更新了它,所以可以格式化,但请注意。这更像是一种解决方法,最好是在查询编辑器中添加持续时间列。
评论
Internal Time
WEEKENDS