我试图手艺MDX查询来回答以下形式的问题:MDX查询层次包含/排除
显示我的所有记录在2008年,除了那些在十一月,除非它们发生在11月17日。
该查询必须概括为使用多于三个子句并且不应该是日期特定的。 (我问使用日期作为例子,因为它很容易理解 - 我很感兴趣,我概括为MDX不同层级
这是迄今为止我已经得到最接近:
SELECT
NON EMPTY { [Measures].[Session Count] } ON COLUMNS,
NON EMPTY { ([SessionIDs].[Session ID].Children) } ON ROWS
FROM (
SELECT
Union(
Descendants([Start Date].[Date].Year.[2008], , LEAVES),
Descendants([Start Date].[Date].[Date].&[20081117], , LEAVES)
)
-
Descendants([Start Date].[Date].[Month].&[2008]&[11], , LEAVES)
ON COLUMNS
FROM [ADM]
) ;
问题是,第二次包含(2008年11月17日)被排除在外,我试着在第一次联合中保留重复项,但是Exclude(减去运算符)消除了所有匹配成员的副本
编辑:
这是另一个例子来帮助理解当我要求“可普遍化”解决方案时的意思。
考虑一个映射应用程序,其中用户可以选择查看他们选择的地理区域中的数据。他们通过放大和缩小地图来选择这些区域,并选择/取消选择quadkeys。 Quadkeys整齐地映射到通常介于18到23层之间的层次结构。
一个有效的用例将随后是:
- 选择QK0
- 取消QK002
- 选择QK0021230
- 取消QK002123033201和QK002123033202
在字(和完全制造映射到这些quadkeys的地名),这将会是这样的:向我显示North A的所有数据美国,但不包括美国的数据,除非该数据是针对纽约州的,但不包括奥尔巴尼或格伦斯福尔斯。
因此,上述日期的相同查询结构必须适用于映射或任何其他层次结构集。还值得注意的是,我正在构建这个MDX以响应用户的操作。
这似乎并不具有普遍性虽然。对于给定的例子它可以正常工作。我会在问题中发表另一个例子。 – 2012-07-19 12:54:00
为了您的编辑,这正是我所到达的。谢谢。 – 2012-07-19 17:17:51