我对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 的记录。
我理解NON EMPTY
的概念,但我找不到合适的语法来显示空记录。
我应该如何修改MDX?
我尝试删除NON EMPTY
,但我收到了一般错误:
Cannot execute the query against OLE DB provider "MSOLAP" for linked server "GCUBE"
我是否需要更改多维数据集中的维度Top Marca
?
提前感谢任何可以帮助我或提供正确解决方法的人。
答案 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的东西可以运行吗?