我需要在MDX中定义一个计算成员(这是SAS OLAP,但我很感激那些使用不同OLAP实现的人的答案。)
应通过应用额外的过滤条件,从现有度量计算新度量值。我想通过一个例子会更清楚:
问题是我不知道MDX而且我的日程安排非常紧张(对于新手问题我很抱歉)。我能想到的最好的是:
([Measures].[Total traffic], [Direction].[(All)].[In])
除了具有特定方向的细胞外,其中几乎可行:
所以看起来方向上的“内在”过滤器被我自己的过滤器覆盖了)。我需要一个“内在”过滤器和我自己的过滤器。我的直觉是它与相交[Direction].[(All)].[In]
与正在评估的细胞的内在坐标有关,但是如果不先阅读这个主题就很难知道我需要什么:)
[edit]我最终得到了
IIF([Direction].currentMember = [Direction].[(All)].[Out],
0,
([Measures].[Total traffic], [Direction].[(All)].[In])
)
..但至少在SAS OLAP中这会导致执行额外的查询(计算[in]的值)到底层数据集,所以我最后没有使用它。
答案 0 :(得分:8)
首先,您可以在MDX中定义新的计算度量,并告诉它使用另一个量度的值,但应用了过滤器:
WITH MEMBER [Measures].[Incoming Traffic] AS
'([Measures].[Total traffic], [Direction].[(All)].[In])'
每当您在报表上显示新度量时,它的行为就像它具有“方向”>的过滤器一样在它上面,无论是否完全使用Direction维度。
但是在你的情况下,你希望Direction维度在使用时具有优势......所以事情变得有些混乱。您必须检测此维度是否正在使用,并采取相应措施:
WITH MEMBER [Measures].[Incoming Traffic] AS
'IIF([Direction].currentMember = [Direction].[(All)].[Out],
([Measures].[Total traffic]),
([Measures].[Total traffic], [Directon].[(All)].[In])
)'
要查看Dimension是否正在使用,我们检查当前单元格是否正在使用OUT。如果是这样,我们可以按原样返回总流量。如果没有,我们可以告诉它在我们的元组中使用IN。
答案 1 :(得分:1)
我认为您应该在总流量事实表中添加一列用于IN / OUT指示&为IN&创建一个Dim表。出价值。然后,您可以根据IN& amp;分析您的数据。出。
答案 2 :(得分:1)
另请查看this question,它描述了同样的问题,并在那里发布了不同的答案。