2012-05-11 74 views
0

我是SSAS,OLAP和MDX語法的新手。Olap cube和MDX和NON EMPTY

所以我有這個MDX通過TSQL(通過鏈接服務器到SSAS)查詢立方體,它工作正常:

select * from openquery(GCUBE, 
'SELECT NON EMPTY { [Measures].[Valore] } ON COLUMNS, 
NON EMPTY { 
([Prodotti].[Top Marca].[Top Marca].ALLMEMBERS 
* [Prodotti].[Top Codice].[Top Codice].ALLMEMBERS 
* [Agenti].[Vw Agenti].[Vw Agenti].ALLMEMBERS 
* [Calendario].[AnnoMese].[Mese].ALLMEMBERS 
* [Prodotti].[Ordinamento].[Ordinamento].ALLMEMBERS 
* [Prodotti].[Top].[Top].ALLMEMBERS) 
} 
DIMENSION PROPERTIES MEMBER_CAPTION 
ON ROWS FROM (SELECT ({ [Calendario].[Anno].&[2012] }) 
ON COLUMNS FROM (SELECT ({ [Agenti].[Vw Agenti].&[005] }) 
ON COLUMNS FROM [Vendite])) WHERE ( [Calendario].[Anno].&[2012])' 
) 

嗯,[Prodotti].[Top Marca]是基於表的尺寸與50最暢銷品牌和此MDX由特定ID代理[Vw Agenti] = 005過濾。

查詢的目的是找出代理商如何銷售公司的50個暢銷品牌。

該查詢工作正常,但有一個品牌不由此代理商出售,我需要顯示空行。

下圖顯示了相對於職位(等級)31缺失的記錄。

MDX Query result

我理解這個概念有關NON EMPTY,但我無法找到正確的語法也顯示空記錄。

我該如何修改MDX?

我試圖刪除NON EMPTY但我得到一個一般性錯誤:

Cannot execute the query against OLE DB provider "MSOLAP" for linked server "GCUBE" 

我是否需要更改尺寸Top Marca多維數據集?

在此先感謝任何能夠幫助我的人或者提供解決此問題的正確提示。

+0

刪除NON EMPTY時出錯? –

+0

@Marc,我添加了關於錯誤的更多信息,但正如你所看到的是一個通用的錯誤 –

+0

爲什麼你要求在行和列上的Agenti? –

回答

1

我不是SSAS/TSQL的專家,但我會嘗試一個簡單的請求首先:

SELECT 

[Measures].[Valore]ON COLUMNS, 

NON EMPTY [Prodotti].[Top Marca].[Top Marca].ALLMEMBERS ON ROWS 

FROM (SELECT { [Calendario].[Anno].&[2012] } ON COLUMNS 
    FROM (SELECT { [Agenti].[Vw Agenti].&[005] } ON COLUMNS 
    FROM [Vendite] 
) 
) ' 

任何方式沒有這個TSQL東西運行呢?

+0

+1啓動簡單。這幾乎總是獲得複雜MDX查詢的最佳方法。獲得一些基本的工作,然後根據複雜程度分層在添加到查詢中時,您將一次識別令人費解的問題1,而不是有50個可能成爲問題原因的候選人。 –