2011-01-07 85 views
1

我一直在努力學習SSAS多維數據集和MDX。到目前爲止,我已經設法創建了一個多維數據集,在通過多維數據集瀏覽器查看時返回正確的數據/幫助瞭解OLAP MDX查詢

查詢生成器,使用了報告服務查詢立方體構建查詢,我看了這個生成的MDX掏出似乎沒有做出實際結果差異的東西。查詢看起來是這樣的:

SELECT NON EMPTY { [Measures].[AverageConnectedSeconds] } ON COLUMNS,  
NON EMPTY { ([Operator].[ACCESS DEF].[ACCESS DEF].ALLMEMBERS * [Calls].[Notification Time Bands].[Notification Time Bands].ALLMEMBERS) } ON ROWS  
FROM (SELECT (-{ [Calls].[Notification Time Bands].&[0] }) ON COLUMNS  
FROM (SELECT ({ [Calls].[Incoming YN].[N] }) ON COLUMNS  
FROM (SELECT (-{ [Calls].[Entity Type].&[6] }) ON COLUMNS 
FROM (SELECT (-{ [Calls].[Reason Text].&[Background Call] }) ON COLUMNS  
FROM (SELECT ({ STRTOMEMBER(@OperatorId) }) ON COLUMNS 
FROM [PNC5data]))))) 

我的語法讀了,我THINK我明白爲什麼查詢正在進行嵌套選擇。 我是否理解嵌套的SELECT FROM在SQL中充當WHERE子句?

如果是這樣的:在MDX是用來做什麼的WHERE子句和時/我爲什麼要使用它?

如果有人能夠給我什麼在此查詢我真的很感激它是實際發生故障!或者,如果您能夠將我引導至資源,我可以進一步瞭解MDX,我會非常感激!

感謝,

詹姆斯

回答

5

瞭解WHERE子句非常簡單。你會在很多來源看到人們抱怨它的誤導性名稱。使用更好的名稱是切片機。通過使用where子句,您可以查詢多維數據集的切片而不是整個多維數據集(顯然,當您查詢切片而不是整個多維數據集時,會獲得一些性能提升)。

FROM子句用於查詢一個立方體查詢另一個MDX查詢即子查詢。子查詢通常比較慢,但功能也更強大。例如當你使用層次結構作爲切片器時,你不能在一個軸上使用它,而你可以使用子查詢。子查詢可以改變層次結構。

在上面的語句中,你看到嵌套子查詢。如果你知道一些MDX語法,很容易打破和解釋每個子查詢,甚至將一些子查詢移到切片器。

我是比較新的全OLAP題目太大。我一直在使用的兩個來源是:icCube MDX reference(我不是微軟的粉絲,icCube是一個很好,易用的替代品)和Fast Track to MDX。我特別喜歡對MDX進行快速跟蹤,因爲它很容易遵循基本MDX功能和術語(如集合,元組,功能等)的說明,特別是如果您使用的是Microsoft BI工具。你也可以看看this post

+0

絕對非常重要的一點是,SQL中的WHERE不同於MDX中的WHERE。 – 2011-02-07 13:16:03