我需要编写一个mdx查询,该查询通过维度的值限制其结果,但也按日期范围限制。我知道如何做其中一个但我无法弄清楚如何同时做两件事。
适用于日期范围:
SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS
FROM [cube]
WHERE {[Date].[Date ISO].[2013-01-26]:[Date].[Date ISO].[2013-06-25]}
这适用于成员切片器:
SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS
FROM [cube]
WHERE [Time Type].[Allocation Type].[Direct]
如何同时通过这两个WHERE子句值约束结果?我已经尝试将它们放在同一个WHERE中,如下所示:
SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS
FROM [cube]
WHERE ([Time Type].[Allocation Type].[Direct],
{[Date].[Date ISO].[2013-01-26]:[Date].[Date ISO].[2013-06-25]})
但是Mondrian回复:没有函数匹配签名(,)。
请注意,Mondrian不支持子查询,或者我会这样做。
我想我可能需要在我的行上使用过滤器函数作为我的成员约束,但我需要过滤一些我不想显示的内容,我不知道该怎么做。
答案 0 :(得分:0)
我认为交叉连接是这样的答案:
SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS
FROM [cube]
WHERE CROSSJOIN([Time Type].[Allocation Type].[Direct],
{[Date].[Date ISO].[2013-01-26]:[Date].[Date ISO].[2013-06-25]})
CROSSJOIN创建“直接”成员和我范围内日期的所有组合作为我的WHERE切片器的元组。我认为这是正确的答案。