更新:元組評估是我們錯過的一個案例,該錯誤已在icCube 4.2中修復。請注意,在where子句和軸上使用相同的層次結構會非常棘手。任何集合都會被過濾掉:「{[2010],[2011]} on 0 .. [2010]將返回[2010],但是一個元組在沒有過濾的情況下被評估,同一維度的不同層次結構將應用自動存在過濾器
由於這是一個有點棘手,我們決定延長SETS允許申報在與全球範圍內評估查詢一組 - 不考慮where子句和子查詢:
WITH
-- always the same regardless of the where clause and subquery
STATIC SET [Global] Filter([Country].members, ([Measures].[Amount], [2010])>80000)
..
最簡單和最有效的解決方案是按照弗蘭克的建議,直接在軸上添加過濾的國家。
SELECT
// this will return the countries with sales amount bigger than 80'000 for [2010]
// e.g. { [USA], [UK] } ... [2010] is is just used for filterting
Filter([Country].members, ([Measures].[Amount], [2010])>80000) on 0,
// When evaluated we're going to use [2009] as it's the slicer default value
[Amount] on 1
FROM [sales]
WHERE [2009]
關於您的查詢它應該工作,我同意,這是在icCube(PTS)中的錯誤,我們將盡快修復。在此期間,你必須避免使用同一層次的切片機,並在切片機中使用的過濾器功能,是這樣的:
WITH
MEMBER [Amount 2009] AS ([Amount],[2009])
SELECT
Filter([Country].members, ([Measures].[Amount], [2010])>80000) on 0,
[Amount 2009] on 1
FROM [sales]
或者你也可以更改爲在icCube(比弗蘭克的工作效率較低版本一個):
SELECT [Country].members on 0, [Amount] on 1
FROM (select Filter([Country].members, ([Measures].[Amount], [2010])>80000) on 0 from [sales])
WHERE [2009]
如果您與分組根據不同critierias你可以使用一個新的功能發揮icCube推出前幾個月的:Categories
它允許創建一個層次中的其他成員hierar chies。您可以將這些國家定義爲[80000+],然後根據此新分類進行計算。
來源
2013-12-17 09:15:31
ic3
這不起作用。它返回一個空表。據我所知,在[2009]上切片將擺脫[2010]的所有數據... – AlwaysLearning
@MeirGoldenberg我驗證了我的查詢 - 根據需要進行了改編 - 使用MS Adventure Works,查看我的編輯答案。我假設你的查詢或你的數據有其他問題。 – FrankPl
icCube中存在一個bug :-(這就是爲什麼不工作 – ic3