MDX:关于维度值的iif条件

时间:2014-11-28 13:00:44

标签: mdx olap mondrian iif

我有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 )

1 个答案:

答案 0 :(得分:0)

执行此操作的多维方式是从状态和状态列创建属性(希望用户可理解的成员,即使用“Ok”而不是“0”)。然后,您可以在事实表上使用正常计数度量,并按这些属性进行切片。无需复杂的计算定义。