1

在 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())时支持的各种常用函数中,但是,那里没有运气。

任何想法为什么会发生这种情况以及如何解决它?

这真的超出了我的理解。

感谢您的任何意见!

4

1 回答 1

1

找到了这个解释,说“报表表达式旨在访问参数和报表会话属性;使用它们来访问查询项可能容易出错。” 报告表达式就是我所说的布局计算

http://www-01.ibm.com/support/docview.wss?uid=swg21340596

因此,我解锁了报告并直接包含了数据项。这样,一切都按预期工作。

于 2013-12-20T13:19:28.367 回答