2016-09-14 56 views
1

我正在執行從Excel數據透視表檢索到的連接到SQL Server Management Studio中的OLAP多維數據集的MDX查詢。我使用SQL Profiler檢索了MDX查詢,同時在Excel中對其進行了刷新。Excel數據透視表結果vs執行的MDX查詢結果

我只是拖動數據透視表的「行」框中的一個維度屬性。 Excel向我展示了所有的客戶ID,並將它們放在每一行中(就像T-SQL中的簡單選擇一樣)。這符合我的期望。

我注意到,雖然Excel在行上顯示選定的維度屬性,但在管理工作室中使用檢索到的MDX查詢將它顯示在列上。

MDX查詢我從SQL事件探查器得到的是:

SELECT NON EMPTY Hierarchize (
{ 
    DrilldownLevel (
    { [CustomerDimension].[CustomerId].[All] } 
    , 
    , 
    , INCLUDE_CALC_MEMBERS 
) 
} 
) DIMENSION PROPERTIES PARENT_UNIQUE_NAME 
, HIERARCHY_UNIQUE_NAME ON COLUMNS 
FROM [DWH] CELL PROPERTIES VALUE 
, FORMAT_STRING 
, LANGUAGE 
, BACK_COLOR 
, FORE_COLOR 
, FONT_FLAGS 

任何人都可以解釋,爲什麼?

+0

如果您重新配置數據透視表,並且實際上將名稱放在列上,那麼mdx會保持不變嗎? – whytheq

+0

嗨,是的,查詢不會改變。這就像Excel進行某種後期處理......只是猜測。 –

回答

2

因爲您沒有要求超過一個Axis。並且COLUMNS是針對Axis的別名()。對你而言,以「行」顯示外觀讀取數據可能更容易。對於Excel而言,重要的是每個軸上的信息。

我想添加額外的信息來幫助您進行MDX探索。

Olap PivotTable Extension

我在沒有辦法與此擴展關聯,但它確實是有用的。

編輯:

您可以設置軸(0)爲空集{ }並在ROWS軸顯示你的客戶。

SELECT 
    { } on 0, 
    [CustomerDimension].[CustomerId].[All].CHILDREN ON 1 
FROM [DWH] 
+0

是的Excel恰好使用只有列上有字段的軸的列軸。只要您在數據透視表中的列上放置了不同的字段,那麼在SSMS中運行時,底層MDX查詢就會更像您所期待的。 – GregGalloway

+0

感謝您的回答。根據一般MDX sintax您正確地說話,我知道您是對的。我的問題與Excel的行爲有關,而不是如何改變MDX以獲得我期望的結果。我的問題是讓最終用戶能夠提取MDX並將其粘貼到我們正在設計的軟件中。我已經在使用您指定的擴展名,以便用戶可以提取它。我只是試圖用MDX獲得與Excel相同的結果。 @GregGalloway:謝謝。這是一種可能的解決方法,但我想了解幕後的內容:) –

+0

@GiulioV。 Excel使用子選擇很多 - 我從來沒有寫過這種風格的mdx - 它也增加了大量的樣板單元屬性絨毛。這絕對是最有用的,但可能不是mdx的最佳參考。 – whytheq