【问题标题】:Olap cube and MDX and NON EMPTYOlap 立方体和 MDX 和 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?

标签: tsql ssas mdx olap


【解决方案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 个可能导致问题的不同候选人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多