2

我需要编写一个 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]})

但蒙德里安回答:没有函数匹配签名(,)。

请注意,蒙德里安不支持子查询,否则我会这样做。

我想我可能需要在我的行上使用过滤器函数来实现我的成员约束,但我需要过滤我不想显示的东西,我不知道该怎么做。

4

1 回答 1

0

我认为 crossjoin 是这样的答案:

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 切片器的元组。我认为这是正确的答案。

于 2013-06-26T03:00:12.280 回答