找不到特定实体时如何克服 MDX 查询错误

How to Overcome MDX Query Error When It Can't Find Specific Entity

当我 运行 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]

我得到一个错误,因为 'italy' 不是在国家/地区维度中找到的实体。 没有返回结果。

我希望能够 运行 mdx 而不必知道维度中的实体名称,并且只为那些存在的实体取回结果。在这个例子中 'Germany'。我该如何克服这个问题?

恐怕不是一个非常肯定的答案,但如果您在脚本中使用成员唯一名称,例如 [Country].[Country].[Country].&[italy],那么如果该成员不在多维数据集中,您将收到错误...我不知道不相信有解决方法。

我必须补充一点,这个 'limitation' 从来没有给我带来任何问题。

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

icCube.mdxEvalUnknownMemberError

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

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