MDX动态集过滤器度量

时间:2015-04-15 08:22:55

标签: mdx

我是MDX的新手。 我想在SSAS(SQL Server 2014)上创建一个动态集,其中此集合过滤所有度量 测量日期大于当前选定日期。

如果不能使用其他解决方案,是否可以使用动态设置?

   ID|Date      |MeasureVal
   1 |15.01.2014| 100
   2 |16.01.2014| 150
   3 |20.02.2014| 500
   4 |21.02.2014| 150

因此,当用户选择此集并且日期过滤器于16.01.2014时,它应显示返回Measures,日期大于16.01.2014。 从上面的例子中,它应该返回ID为3,4的Measures

这是我的尝试

CREATE DYNAMIC SET CURRENTCUBE.[MyTestSet]
 AS  
  Filter (
  [Production Time].[Time Hierarchy].[Date].AllMembers , 
  ( [Production Time].[Time Hierarchy].[Date].CurrentMember.member_caption > "Current selected Date?" )
   ;   

1 个答案:

答案 0 :(得分:0)

也许这个?

CREATE DYNAMIC SET CURRENTCUBE.[MyTestSet]
 AS     Filter(
          [Production Time].[Time Hierarchy].[Date].Members as dtSet,
          dtSet.Item(
            dtSet.CurrentOrdinal-1
          ).member_caption > "Current selected Date?"
        );

但我不认为member_caption会返回一个数字,那么>将如何运作?

通常如果你想要一组日期大于mdx中指定成员的日期,你可以使用范围运算符,它是一个冒号:,一边是null,结肠。所以这里有两个例子:

WITH 
SET [GreaterThanX] AS
  {
    [Production Time].[Time Hierarchy].[Date].[01 Jan 2014]
   :
    null
  }
SET [LessThanX] AS
  {
    null
   :
    [Production Time].[Time Hierarchy].[Date].[01 Jan 2014]
  }
SELECT
  {} ON 0,
  [GreaterThanX] ON 1
  //[LessThanX] ON 1
FROM myCube;

尝试以上方法 - 第一个应该在1月1日之后给你所有日期,而第二个所有日期都小于。 注意:使用:运算符时,重要的是指定的成员(在本例中为[Production Time].[Time Hierarchy].[Date].[01 Jan 2014]存在于多维数据集中 - 如果它不存在则不会发生错误但表达式将被计算为{ {1}}即将返回所有日期。