0

我对 SSAS、OLAP 和 MDX 语法很陌生。

所以我有这个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 查询结果

我理解这个概念,NON EMPTY但我找不到正确的语法来显示空记录。

我应该如何修改 MDX?

我试图删除NON EMPTY,但我得到一个通用错误:

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

我需要更改Top Marca多维数据集中的维度吗?

提前感谢任何可以帮助我或提供解决此问题的正确提示的人。

4

1 回答 1

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 的东西有什么方法可以运行它?

于 2012-05-13T00:26:38.833 回答