过滤多维度的最有效方法

时间:2014-09-17 09:23:25

标签: filter mdx

尝试获取201405期间开放的所有变更的[编号]和[花费的时间总和]。

我能想到的开放的最佳定义是:      - 在[MonthPeriod]之前或期间记录的更改,在[MonthPeriod]期间或之后关闭的更改

SELECT
    [Measures].[Sum of Time Spent] ON COLUMNS
    ,
    [FactChange].[Number].[Number] ON ROWS
FROM
    [Change Management]
WHERE
    (FILTER(
            [DimLoggedDate].[MonthPeriod].[MonthPeriod]
            ,[DimLoggedDate].[MonthPeriod].MEMBERVALUE <= 201405
        )
        ,
        FILTER(
            [DimClosedDate].[MonthPeriod].[MonthPeriod]
            ,[DimClosedDate].[MonthPeriod].MEMBERVALUE >= 201405
        ))

上面的查询返回一个包含所有数字的列表,当WHERE子句中的过滤器不适用时,该值为空值。我想删除NULL项。

因为查询返回所有数字,我想知道这是否是解决问题的最有效查询。应用NonEmpty()会删除数字,但由于枚举了所有更改,这不会给系统带来更多压力吗?

1 个答案:

答案 0 :(得分:0)

只需在on Rows子句中添加“Non empty”即可:

...
non empty [FactChange].[Number].[Number] on Rows
...