MDX:按度量的表值过滤成员集

时间:2009-02-05 10:17:28

标签: filter mdx pentaho

我在事实表中有一些数字,并生成了一个使用SUM聚合器来汇总数字的度量。但问题是我只想总结高于10的数字,比如10。我尝试在度量定义中使用通用表达式,当然这样做,但问题是我需要能够动态设置这个值,因为它并不总是10,这意味着用户应该能够自己选择它。

更具体地说,我目前的MDX看起来像这样:

WITH
SET [Email Measures] AS '{[Measures].[Number Of Answered Cases], 
[Measures].[Max Expedition Time First In Case], [Measures].[Avg Expedition Times First In Case], 
[Measures].[Number Of Incoming Email Requests], [Measures].[Avg Number Of Emails In Cases],
[Measures].[Avg Expedition Times Total],[Measures].[Number Of Answered Incoming Emails]}' 

SET [Organizations] AS '{[Organization.Id].[860]}' 
SET [Operators] AS '{[Operator.Id].[3379],[Operator.Id].[3181]}'
SET [Email Accounts] AS '{[Email Account.Id].[6]}'
MEMBER [Time.Date].[Date Period] AS Aggregate ({[Time.Date].[2008].[11].[11] :[Time.Date].[2009].[1].[2] }) 
MEMBER [Email.Type].[Email Types] AS Aggregate ({[Email.Type].[0]}) 
SELECT {[Email Measures]} ON columns,
[Operators] ON rows 
FROM [Email_Fact]
WHERE ( [Time.Date].[Date Period] )

现在,有问题的成员是计算成员[Avg Expedition Times Total]。该成员采取两项措施; [Sum Expedition Times]和[Exredition Times的Nr]并将其中一个分开以获得平均值,所有这些目前都有效。但是,我希望[Sum Expedition Times]仅在我/用户希望的参数之上或之下汇总值。

如何过滤数字[Sum Expedition Times]迭代,而不是过滤度量最终给出的总和?

2 个答案:

答案 0 :(得分:0)

您可以将成员移动到MDX查询中,而不是将其放在多维数据集中。然后你得到类似......

WITH
MEMBER [Avg Expedition Times Total] AS
SUM(
    FILTER([Your Dimension],
        [Measure you want to filter] > 10),
    [Measure you want to sum])

我不确定您想要过滤和总结哪些尺寸和尺寸,但我认为这是朝着正确方向迈出的一步。如果您的用户无法修改MDX(或者不想!),那么创建多个度量也是一个非常可靠的解决方案。

答案 1 :(得分:0)

您需要具有一个包含此Measure的不同值的Dimension(以防万一,如果不同值的数量太高,则可能存在某种范围)。然后将这个维度加入事实。连接应该很简单。 Measure列也将成为关键列。现在,您只需参考尺寸标注成员。