在 Power BI 中将持续时间格式化为 hh:mm:ss 可重用

Format durations as hh:mm:ss in PowerBI reusably

我正在为 SQL 个服务器数据库编写 PowerBI 报告。

这些数据库中的 tables 可能会变得有点笨拙(1,000,000,000 多行),所以我在中间使用 Analysis Services Tabular —— 主要是为了让我定义具有受控刷新的分区. SQL 服务器可以 直接被报告击中,它们 需要所有这些行,并且报告可以落后15分钟以上。

我需要显示的大约 90% 的值是持续时间,它们在基数 table 中定义为整秒或毫秒。

很多时候,这些值需要以 hh:mm:ss 格式显示。

PowerBI 不支持持续时间类型(如果你问我,这是一个巨大的 WTF),但是向包含持续时间值的 table 添加度量相对容易在几秒钟内并使用 DAX 将其转换为 hh:mm:ss:

var duration = Sum/Average/Min/Max([SOMEFIELD])
var hours = Int(duration / 60)
var minutes = Int(Mod(duration - (hours * 60), 60) / 3600)
var seconds = RoundUp(Mod(Mod(duration - (hours * 60), 60), 3600), 0)
var h = If(hours > 9, "" & hours, Right("0" & hours, 2))
var m = Right("0" & minutes, 2)
var s = Right("0" & seconds, 2)
return If(IsBlank(duration), Blank(), h & ":" & m & ":" & s

此公式在作为度量添加到 PowerBI 中时工作正常。

但是,对于 150 多份报告,我们每份报告谈论 3-11 次。正如你们中的一些人可能已经注意到的那样,其中一些 DAX 有点简陋,我肯定想在某个时候重新访问它——但不是 800 次。

我的问题:如何做到这一点,这样我就不必维护此代码的 800 个相似副本?

如果我在 SSAS 方面对其进行任何操作,该字段将以字符串的形式出现并被踩平,或者完全没有上下文,这就是我所说的。

有什么想法吗?

问题原来是我通过 AMO 将 hh:mm:ss 值添加到模型中作为 CalculatedColumns,而不是 Measures。