我对MDX很陌生,我对其中一项措施的汇总存在一些问题。
在我的DSV中,我有一个“事件”表。我们跟踪运行这些事件的代理,并且由于多个代理可以参与运行单个事件,我将其拆分为一个单独的“代理”表,中间有一个桥接表:
我想跟踪所谓的“覆盖范围”,即特定周内举行的活动数量以及每个运行该活动的代理商。因此,如果一周举行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),请总结每个代理的所有事件计数,否则,如果我正在按代理进行分析,则只给我每个代理的事件。这很有用......如果我想通过一个特定的代理进行过滤,也可以工作,但如果我尝试过滤多个(但不是全部)代理,那么它就会失效,给我一个空值。
我完全不知道如何解决这个问题,任何人都可以帮助我吗?
克里斯
答案 0 :(得分:0)
您的表设计涵盖了计算事件数量的要求,避免了通过主事实表和代理维度表之间的多对多桥表重复计算代理。如果您希望某个度量不避免重复计算,那么它的事实表应该直接链接维度表。
因此,我将创建一个具有三维表外键的视图或命名查询,并将其用作新测量组的基础以及现有测量组的基础。可以将此视图或命名查询构建为主事实表和桥接表的连接。然后将计数作为覆盖度量添加到此度量值组。