我消耗在Report Studio中TM1多维数据集时遇到一些麻烦的IF / CASE表达式。
我“过滤”与包括从“分支”维的元素的元组功能的交叉表。 用户可以通过我已经做了值提示通过这个分支层次结构进行导航。
因此,用户曾要求他们在每一次能看到他们在分支层次结构(即看到从根到当前节点的路径)。
因此,我曾试图弥补其在任何时候都代表了当前节点,而目前二级查询表达式:
[CurrentBranch]:
#prompt('pBranch', 'MUN', '[Cube].[Dimension].[Hierarchy].[Level]->:[TM].[Dim_Branch].[Dim_Branch].[@MEMBER].[49981]')#
[现在的水平]:
ordinal(level([CurrentBranch]))
上述这些问题都按预期工作。 然而,当我尝试使用IF / CASE语句,以显示父母的正确的量,我获得各种随心所欲的错误。 一个例子是一个[FirstParent]表达:
IF ([CurrentLevel] > 1) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')
它产生以下错误......
Data size error. The data type is 'cclDTypeExternalBuffer'.
...当[FirstParent]加到一个布局计算 。
如果我改变表达式(只是为了测试IF语句):
IF (1 > 0) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')
示出了同样的错误。 如果我再更改声明
IF (1=0) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')
要么
IF (1=1) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')
没有显示错误,结果是正确的。
但是,如果我现在改变表达式:
IF ([CurrentLevel]=1) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')
......然后同样的错误再次显示。
Data size error. The data type is 'cclDTypeExternalBuffer'.
我试图包裹[CurrentLevel]内,与OLAP工作时,支持各种常见功能(例如ABS()),但没有运气。
任何想法,为什么发生这种情况,如何解决?
这确实达到超出了我的理解。
感谢您的任何输入!