我試圖手藝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