如何在无法查找特定实体时克服MDX查询错误

时间:2016-09-18 07:56:18

标签: entity mdx cube dimensions iccube

当我运行MDX查询时:

select {[Measures].[all_accounts]} ON COLUMNS,

{{[Country].[Country].[Country].&[italy]}*
{[TD].[TD].[date].&[2016-09-02T03:00:00.000]:[TD].[TD].[date].&[2016-09-02T03:08:00.000]},
{[Country].[Country].[Country].&[Germany]}*
{[TD].[TD].[date].&[2016-08-16T04:00:00.000]:[TD].[TD].[date].&[2016-08-16T04:03:00.000]}}

ON ROWS

FROM [cube]

我收到错误,因为意大利'不是在Country维度中找到的实体。 没有结果回来。

我希望能够在不必知道维度中的实体名称的情况下运行mdx,并仅返回存在的结果。在这个例子中'德国'我怎么能克服这个问题?

2 个答案:

答案 0 :(得分:1)

您可以更改服务器icCube.xml的配置,将未找到的成员转换为空(这样做有风险)。

icCube.mdxEvalUnknownMemberError

如果您不想为整个服务器更改此设置,则可以对每个MDX查询使用注释。例如,以下查询不会为缺少的& [_ FR]成员返回任何内容:

//#prop( icCube.mdxEvalUnknownMemberError = false )
select { 
  [Geography].[Geo].[Country].&[FR_], 
  [Geography].[Geo].[Country].&[US] 
} on 0 from [Sales]

答案 1 :(得分:0)

我担心这不是一个非常积极的答案,但是如果你在脚本中使用成员唯一的名称,例如<div class="out"> <div class="bar"></div> <div class="circle"></div> </div>,那么如果该成员不在多维数据集中,你将会收到错误...我不知道认为有一种解决方法。

我必须补充一点这个限制&#39;从来没有给我带来任何问题。