这些数据库中的事实表可能会有点僵硬(1000000000行),所以我在中间使用AnalysisServices表格——允许我主要用受控刷新来定义分区。SQL服务器可以
不
直接受到报告的打击,他们
需要所有这些行,并且报告可以
不
我需要显示的大约90%的值是持续时间,它们在基本表中定义为整秒或毫秒。
PowerBI不支持持续时间类型(如果你问我的话,这是一个巨大的WTF),但向包含持续时间值(以秒为单位)的表中添加度量值并使用DAX:
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表格模型中添加一个字段,并使用DAX公式,但这不起作用——它在SSAS服务器上得到解析,然后直接输入文本。这意味着您可以计算字段,也可以添加它,但它对范围一无所知——您只需要得到所有行的总和/平均值/最小值/最大值。
-
hh:mm:ss
不起作用,因为它不是一个实际的时间域,也不是一个可计算的域。
如果我在SSAS方面对它做了什么,那么这个字段就变成了一根弦,被踩扁了,或者完全没有上下文,这就是我要说的。
有什么想法吗?