我是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?" )
;
答案 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}}即将返回所有日期。