簡體   English   中英

如何過濾具有維度的事實?

[英]How can I filter Fact with a Dimension?

我使用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功能過濾結果?

您的Filter表達式的作用是:

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

需要注意的是=兩側的進行比較,在這種情況下,作為上下文設置措施Circulation Count ,的值Circulation Count 如果要比較成員身份,則必須使用IS而不是=

這對您的陳述意味着什么? 我不確定您為什么不想使用WHERE子句,但是正如@mmarie所說,您可以將[Circulation Code]WHERE軸移到行軸:

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而不是=

與@FrankPI交流后,我覺得很好:

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

Select 
    X On Columns
From <>

而且通過這種方法,我可以用一個dimension過濾measure

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM