Olap 立方体和 MDX 和 NON EMPTY
Posted
技术标签:
【中文标题】Olap 立方体和 MDX 和 NON EMPTY【英文标题】:Olap cube and MDX and NON EMPTY 【发布时间】:2012-05-11 15:01:55 【问题描述】:我对 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
?
提前感谢任何可以帮助我或提供解决此问题的正确提示的人。
【问题讨论】:
删除 NON EMPTY 时出现什么错误? @Marc,我添加了有关该错误的更多信息,但如您所见,这是一个通用错误 你为什么要在列和行上都使用 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 的东西有什么方法可以运行它?
【讨论】:
+1 开始简单。这几乎总是弄清复杂 MDX 查询的最佳方式。得到一些基本的工作,然后再增加复杂性。当您添加到查询中时,您将一次发现 1 个令人费解的问题,而不是有 50 个可能导致问题的不同候选人。以上是关于Olap 立方体和 MDX 和 NON EMPTY的主要内容,如果未能解决你的问题,请参考以下文章