2014-01-05 36 views
1

我用SSASSQL Server 2008 R2如何使用維度過濾事實?

我寫這篇文章的查詢和它的工作原理:

SELECT 
[Measures].[Circulation Count] 
    ON COLUMNS 
FROM [Store] 
where [Circulation Kind].[Circulation Code].&[1] 

而且結果是:362154.2154

但是當我使用Filter功能我的結果是空的。

SELECT 
Filter(
    [Measures].[Circulation Count] 
     , 
    [Circulation Kind].[Circulation Code] 
    = 
    [Circulation Kind].[Circulation Code].&[1] 
) 
    ON COLUMNS 
FROM [Store] 

如何使用Filter函數篩選我的結果?

+0

我不確定你會想要使用那樣的過濾功能。通常,過濾器函數用於過濾一組維度成員。例如,過濾上個月銷售額超過$ 100000的商店。你只是在理論上問,還是有什麼比你想要完成的這個查詢更多? – mmarie

+0

如果您試圖在不使用where子句的情況下找到一種方法來執行此查詢,則可以在ROWS軸上放置[Circulation Kind]。[Circulation Code]。[&]。或者創建一個計算出的成員總和([Measures]。[Circulation Count],[Circulation Kind]。[Circulation Code]。] [1]),然後在列上使用。 – mmarie

回答

0

與@FrankPI溝通後,我喜歡這是好的:

With 
    Member X As 
     ( 
      [Measures].[Circulation Count] , 
      (
       [Circulation Kind].[Circulation Code].&[1] 
     ) 
     ) 

Select 
    X On Columns 
From <> 

而且在這個方法我可以用dimension過濾我measure

+1

實際上,你可以省略內部圓括號,因爲你真正使用的元組是'([Measures]。[Circulation Count],[Circulation Kind]。[Circulation Code]&[1])''。 Analysis Services只是寬容的,並允許您使用這些括號。 – FrankPl

+0

merci @FrankPl。 –

1

你的Filter表達的作用是:

  • 與由測量[Measures].[Circulation Count]的一個元素集開始。
  • 然後,從這個組的保持(=濾波器)中的元素(=措施),其中值的[Circulation Kind].[Circulation Code]是一樣的值的[Circulation Kind].[Circulation Code].&[1]。比較一個屬性和一個成員會觸發一個隱式類型轉換來使兩個類型相同,在這種情況下,通過隱式應用DefaultMember方法將該屬性轉換爲成員。這意味着您將默認成員(通常是All成員)的值與具有密鑰1的成員的值進行比較。而且,假設此屬性中有多個成員,這可能總是錯誤的。

注意=兩側進行比較,在此情況下,作爲上下文設置措施Circulation Count,的Circulation Count值。如果您想比較會員身份,則必須使用IS而不是=

這是什麼意思爲您的聲明?我不知道爲什麼你不希望使用WHERE條款,但作爲@mmarie說,你可以只從WHERE軸移動[Circulation Code]對行軸:

SELECT 
[Measures].[Circulation Count] 
    ON COLUMNS, 
[Circulation Kind].[Circulation Code].&[1] 
    ON ROWS 
FROM [Store] 

如果你真的想使用Filter,你可以使用:

SELECT 
[Measures].[Circulation Count] 
    ON COLUMNS, 
Filter([Circulation Kind].[Circulation Code].Members as c, 
     c.Current IS [Circulation Kind].[Circulation Code].&[1] 
     ) 
    ON ROWS 
FROM [Store] 

.Members使用的屬性顯式轉換爲一組成員,以及IS,不=使用,在最後陳述。

+0

我想創建一個成員,並在成員語法我不能使用的地方! –

+0

有些事情是這樣的:With Member X As([Measures]。[Circulation Count],([Circulation Kind]。[Circulation Code]。] [1])) –

+0

你在哪種情況下假設你需要成員語法?也許你需要的是一套,而不是一個成員。 – FrankPl