我有一个由2个立方体组成的虚拟立方体。第一个多维数据集的事实表示例。
id object_id time_id date_id state
1 10 2 1 0
2 11 5 1 0
3 10 7 1 1
4 10 3 1 0
5 11 4 1 0
6 11 7 1 1
7 10 8 1 0
8 11 5 1 0
9 10 7 1 1
10 10 9 1 2
其中状态:0-正常,1-关闭,2-未知
对于这个多维数据集,我有一个度量值StateCount,它应该计算每个object_id的状态。例如,这里我们有这样的结果:
对于10 :3次Ok,2次Down,1次未知11 :3次Ok,1次Down
第二个立方体看起来像这样:
id object_id time_id date_id status
1 10 2 1 0
2 11 5 1 0
3 10 7 1 1
4 10 3 1 1
5 11 4 1 1
其中状态:0-输出,1-输入。我把这个保存在StatusDim里。
在这个表中,我保留了不应该被计算在内的记录。如果对象状态为1,则意味着我已将其从计数中排除。
如果我们将这些表相交并使用StateCount,我们将收到以下结果:
对于10 :2次Ok,1次Down,1次未知
对于11 :2次Ok,1次Down
据我所知,我必须使用带有IIF
条件的计算成员。目前我正在尝试这样的东西。
WITH MEMBER [Measures].[StateTimeCountDown] AS(
iif(
[StatusDimDown.DowntimeHierarchy].[DowntimeStatus].CurrentMember.MemberValue
<> "in"
, [Measures].[StateTimeCount]
, null )
)
发布于 2014-11-29 04:23:34
这样做的多维方法是从状态和状态列创建属性(希望有用户可理解的成员,即使用"Ok“而不是"0")。然后,您可以只对事实数据表使用普通计数度量,并按这些属性进行切片。不需要复杂的计算定义。
https://stackoverflow.com/questions/27189239
复制相似问题