可重复使用PowerBI中将持续时间格式化为hh:mm:ss



我有编写PowerBI报告的SQL Server数据库。

这些数据库中的事实数据表可能会有点混乱(1000000000多行(,所以我在中间使用AnalysisServicesTabular——主要是为了允许我定义具有受控刷新的分区。SQL Server可以不被报告直接命中,它们确实需要所有这些行,并且报告可以延迟15分钟以上。

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

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

PowerBI不支持持续时间类型(如果你问我的话,这是一个巨大的WTF(,但相对来说,向包含以秒为单位的持续时间值的表中添加度量值并使用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个类似的代码副本?

  • 据我所知,没有办法共享DAX公式
  • 保存PowerBI模型并重用它可以保存模型,据我所知,它不包括本地添加的度量。如果基于SSAS表格模型,则不会
  • 由于我正在处理SSAS表格模型,因此实际上无法向模型中添加字段
  • 我可以在SSAS表格模型中添加一个字段,并使用DAX公式,但这不起作用——它在SSAS服务器上得到解析,并直接输入文本。这意味着你可以计算字段,也可以添加它,但它对范围一无所知——你只得到所有行的总和/平均值/最小值/最大值
  • 将SSAS字段上的FormatString设置为hh:mm:ss无效,因为它既不是实际的时间字段,也不是可计算的字段

如果我在SSAS方面对它做了任何事情,字段就会像一根绳子一样被踩扁,或者完全没有上下文,这就是我要说的。

有什么想法吗?

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

最新更新