2014-02-20 22 views
-1

WHERE &從T-SQL的角度看,有什麼區別。MDX查詢中的WHERE&FROM有什麼區別?

請參閱數據透視表MDX的副本。我已在數據透視表中的[客戶狀態],[查詢創建日期日期層次結構]和[用戶團隊層次結構]上篩選。

我不明白爲什麼有些過濾器會去WHERE和其他的過濾器。

SELECT 
{ [Measures].[Unique Cust Ref Distinct Count], [Measures].[Number of Distinct Customers] } ON COLUMNS, 
{ [Request].[Cust Type].children } ON ROWS 
FROM (
    SELECT (
    { [Request].[Request Created By Team].&[CINS] 
    ,[Request].[Request Created By Team].&[CIST] 
    ,[Request].[Request Created By Team].&[DCISS] 
    , [Request].[Request Created By Team].&[WRT] }) ON COLUMNS 
    FROM [CRM Reporting] 
) 
WHERE ([Customer].[Customer Status].&[Active], [Request Creation Date].[Date Hierarchy].[Year].&[2014]) 
+0

許多關鍵字的好處在於關鍵字的「名稱」會指示它的含義。因此,FROM表示 - 來自數據源的數據 - 而Where表示...以及某些條件滿足的數據。 –

+0

@ AllanS.Hansen條件可以在FROM和WHERE中實現;因此,它很混亂。 –

回答

2

在MDX WHERE和子查詢之間的主要區別是:

  • WHERE改變切片器軸,這意味着你不能把任何層次上像列和行任何其他軸。
  • 子選擇不會更改CurrentMember設置。這意味着如果您在WHERE條件中使用多重選擇,則更有可能遇到麻煩。另一方面,如果在子查詢中使用多重選擇,則無法輕鬆地引用選定的成員,您可以使用類似EXISTS之類的內容。
  • 子選擇會更改所選層次結構的所有成員(「VisualTotals」)的值 - 至少在默認設置下。但是,通常情況下,WHERE條件與此有關的不同行爲是不可見的,因爲所有成員 - 因爲它是層次結構的一部分 - 不能放在任何其他軸上。然而,它可以在計算的成員中被引用。
  • 子選擇可以嵌套,WHERE不能。
  • 表現明智,有時一個,有時另一個更好。你將不得不測試。
相關問題