Olap cube和MDX以及NON EMPTY

时间:2012-05-11 15:01:55

标签: tsql ssas mdx olap

我对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 Query result

我理解NON EMPTY的概念,但我找不到合适的语法来显示空记录。

我应该如何修改MDX?

我尝试删除NON EMPTY,但我收到了一般错误:

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

我是否需要更改多维数据集中的维度Top Marca

提前感谢任何可以帮助我或提供正确解决方法的人。

1 个答案:

答案 0 :(得分: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的东西可以运行吗?