MDX用过滤器替换范围

时间:2009-12-02 00:23:03

标签: filter range mdx

在查看以下答案时,我想用过滤器替换范围。

MDX - Concurrent calculations based on a "record time range"?

MDX是:

with member [Measures].[TotalUsed] as sum({[Date].[YQM].&[20090501]:[Date].[YQM].&[20090907]}, [Measures].[Used])
select    {[Measures].[Total Used]}on columns,    
          {[Color].[Colors].[All].MEMBERS}on rows
from [Cube]

我正在尝试使用以下过滤器替换日期范围:

with member [Measures].[TotalUsed] as sum(FILTER([Date].[YQM], [Date].[YQM] < [Date].[YQM].&[20090907]), [Measures].[Used])
select    {[Measures].[Total Used]}oncolumns,
          {[Color].[Colors].[All].MEMBERS}on rows
from [Cube]

在比较价值方面寻找的条件语句是什么?任何帮助都会很棒!

谢谢!

1 个答案:

答案 0 :(得分:1)

Filter语句需要一个SET然后一个EXPRESSION来过滤。您可以将其放在SUM函数中。过滤器的表达式部分几乎可以是任何东西,但必须为SET中的每个单元格调整为真/假。

- FILTER(SET,EXPRESSION)

有点难以知道你的数据是什么样的结构,但你的声明可能最终会像下面这样,过滤你的时间段少于50'UnUsed'的行,然后将它们作为一个例子加以总结。

`

WITH MEMBER [Measures].[TotalUsed] 
 AS SUM (FILTER ( [Date].[YQM].members, [Measures].[UnUsed] > 50 ), 
                  [Measures].[Used] )

SELECT    {[Measures].[Total Used]} ON COLUMNS,          
{[Color].[Colors].[All].MEMBERS} ON ROWS 
FROM [Cube]