在 Report Studio 中使用 TM1 多维数据集时,我遇到了 IF / CASE 表达式的问题。
我正在“过滤”一个带有元组函数的交叉表,该函数包含“分支”维度中的一个元素。用户可以通过我所做的值提示浏览此分支层次结构。
因此,用户要求他们每次都能看到他们在分支层次结构中的位置(即看到从根到当前节点的路径)。
因此,我尝试制作两个查询表达式,它们始终代表当前节点和当前级别:
[当前分支]:
#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())时支持的各种常用函数中,但是,那里没有运气。
任何想法为什么会发生这种情况以及如何解决它?
这真的超出了我的理解。
感谢您的任何意见!