使用可能完全为空的层次结构级别

时间:2017-09-22 16:45:58

标签: reporting-services ssas mdx ssrs-2012

我的层次结构最多有4个级别。级别4并不总是存在,但我的SSRS报告将其用于某些逻辑(处理为空)。 我的MDX查询的这一部分返回层次结构的所有级别,包含一些数据:

{ DESCENDANTS([Hierarchy].[Hierarchy], [Hierarchy].[Hierarchy].[Level4], LEAVES) } ON ROWS

当我的结果至少有一行用于第4级时,报告正常工作。但是,如果用户使用报告中的某些参数指定一组没有级别4的数据,则会显示以下错误:

The dataset 'Data' contains a definition for the Field 'Level4'.
This field is missing from the returned result set from the data source.

我该如何处理?基本上,如果用户设法过滤掉没有4级节点的一小部分数据,我的报告就会停止工作。

编辑:我一直在做一些测试,由于某种原因,错误不再显示。但是我仍然遇到同样的问题,因为Level4值的字段在报告中只是空白,如果我在那里放了一些IsNothing()逻辑,我会得到#Error而不是True / False,所以报告不起作用。

1 个答案:

答案 0 :(得分:1)

而不是:

{ DESCENDANTS([Hierarchy].[Hierarchy], [Hierarchy].[Hierarchy].[Level4], LEAVES) } ON ROWS

您需要指定Level4吗?我假设上面的内容返回了层次结构最低级别(4)的所有成员 - 可能类似于以下'模式':

[Dimension].[Hierarchy].LEVELS([Dimension].[Hierarchy].Levels.Count-1) 

但是如果你想坚持功能后代那么也许这个'模式':

DESCENDANTS([Dimension].[Hierarchy].[All], ([Dimension].[Hierarchy].Levels.Count - 1), SELF)

但是即使是以下类似的东西也可以满足您的需求:

DESCENDANTS([Dimension].[Hierarchy].[All], , LEAVES)