我需要定义一个计算会员在MDX(这是SAS OLAP,但我想更好的答案从工作人员不同的OLAP实现无论如何)。

新措施的价值计算应从现有措施通过应用一个过滤器的额外条件。我想这会更清楚有一个例子:

  • 现有的措施:"总务"
  • 现有的尺寸:"方向"("中"或"出去")
  • 我需要建立一个计算元件"来交通",这等于"总务"有额外的过滤器(向="中的")

问题是我不知道MDX和我在一个非常紧的时间表(很抱歉对于一个新手的问题)。好的,我能想出的是:

([Measures].[Total traffic], [Direction].[(All)].[In])

这几乎的工作,除了用于细胞与特定的方向:

example

因此它看起来像是"固有的"过滤器上的方向是复盖我自己过滤器)。我需要一个交叉路口的"固有的"过滤器和我自己的。我的直觉是,它做交叉 [Direction].[(All)].[In] 与征coords的单元正在进行评估,但很难知道我需要什么没有一读了关于这个问题:)

[编辑]我结束了

IIF([Direction].currentMember = [Direction].[(All)].[Out],
    0,
    ([Measures].[Total traffic], [Direction].[(All)].[In])
)

..但至少在SAS OLAP这将导致额外的查询,以执行(计算的价值[在])的基础数据集,因此我没有使用它的结束。

有帮助吗?

解决方案

开始,你可以界定一个新的计算衡量在MDX,并且告诉它使用价值的另一项措施,但与一个过滤器应用:

WITH MEMBER [Measures].[Incoming Traffic] AS
'([Measures].[Total traffic], [Direction].[(All)].[In])'

每当你出现的新措施的报告,它将表现为如果它有一个过滤器的方向>在对它,无论是否向维用。

但你的情况,你希望的方向层面采取优先顺序的时候。所以事情变得有点乱。你将得到检测,如果这一层面是在使用,并采取相应的行动:

WITH MEMBER [Measures].[Incoming Traffic] AS
'IIF([Direction].currentMember = [Direction].[(All)].[Out],
    ([Measures].[Total traffic]),
    ([Measures].[Total traffic], [Directon].[(All)].[In])
)'

看如果该尺寸是在使用中,我们检查,如果目前的电池是使用。如果是这样我们就可以返回总流量,因为它是。如果没有,我们可以告诉它用于在我们的元组。

其他提示

我觉得你应该把列在总流量的事实表/出指示和创建一个暗淡的表出的价值观。然后你可以分析你的数据的基础上进出。

还看看 这个问题, 它描述了同样的问题,并有一个不同的答案张贴在那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top