我有1个虚拟立方体由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次Unknown 11:3次好,1次下来
第二个立方体看起来像这样:
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次Unknown
11:2次好,1次下来
据我所知,我必须使用IIF
条件的计算成员。目前我正在尝试这样的事情。
WITH MEMBER [Measures].[StateTimeCountDown] AS(
iif(
[StatusDimDown.DowntimeHierarchy].[DowntimeStatus].CurrentMember.MemberValue
<> "in"
, [Measures].[StateTimeCount]
, null )
)
答案 0 :(得分:0)
执行此操作的多维方式是从状态和状态列创建属性(希望用户可理解的成员,即使用“Ok”而不是“0”)。然后,您可以在事实表上使用正常计数度量,并按这些属性进行切片。无需复杂的计算定义。