![](/img/trans.png)
[英]How can I find the relationship between dimension and fact tables when there is no FK?
[英]How can I filter Fact with a Dimension?
我使用SSAS
和SQL 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.