MDX - 仅选择维度成员?

时间:2014-08-18 08:47:10

标签: sql ssas mdx olap olap-cube

我对MDX很陌生,我对其中一项措施的汇总存在一些问题。

在我的DSV中,我有一个“事件”表。我们跟踪运行这些事件的代理,并且由于多个代理可以参与运行单个事件,我将其拆分为一个单独的“代理”表,中间有一个桥接表:

http://imgur.com/uAy3moC

我想跟踪所谓的“覆盖范围”,即特定周内举行的活动数量以及每个运行该活动的代理商。因此,如果一周举行3次活动,其中一次活动由两名代理人举办,则覆盖范围为4次。

当我去分析立方体时,拖动周开始和我的事件计数,我注意到它是不对的 - 它只考虑个别事件而不是代理的数量。拖动代理解决了这个问题,但我仍然希望看到一个整体数字,而不必拖动代理。

所以我创建了一个像这样的计算成员:

CREATE MEMBER CURRENTCUBE.[Measures].[Visit Coverage] AS IIF([Agents].[Agent].currentmember.parent IS NULL, SUM([Agents].[Agent].[Agent], [Measures].[Events Count]), [Measures].[Events Count]);

所以基本上,如果选择了所有代理(parent为null),请总结每个代理的所有事件计数,否则,如果我正在按代理进行分析,则只给我每个代理的事件。这很有用......如果我想通过一个特定的代理进行过滤,也可以工作,但如果我尝试过滤多个(但不是全部)代理,那么它就会失效,给我一个空值。

我完全不知道如何解决这个问题,任何人都可以帮助我吗?

克里斯

1 个答案:

答案 0 :(得分:0)

您的表设计涵盖了计算事件数量的要求,避免了通过主事实表和代理维度表之间的多对多桥表重复计算代理。如果您希望某个度量避免重复计算,那么它的事实表应该直接链接维度表。

因此,我将创建一个具有三维表外键的视图或命名查询,并将其用作新测量组的基础以及现有测量组的基础。可以将此视图或命名查询构建为主事实表和桥接表的连接。然后将计数作为覆盖度量添加到此度量值组。