IBM Cognos Report Studio:在TM1多维数据集上使用IF / CASE时出现任意错误

时间:2013-12-20 09:41:58

标签: cognos cognos-bi cognos-tm1 cognos-10

在Report Studio中使用TM1多维数据集时,我遇到了一些IF / CASE表达式问题。

我正在“过滤”带有元组函数的交叉表,该元组函数包含“分支”维度中的元素。用户可以通过我提供的值提示来浏览此分支层次结构。

因此,用户要求他们每次都能看到他们在分支层次结构中的位置(即,查看从根到当前节点的路径)。

因此我尝试制作两个查询表达式,它们始终代表当前节点和当前级别:

[CurrentBranch]:

#prompt('pBranch', 'MUN', '[Cube].[Dimension].[Hierarchy].[Level]->:[TM].[Dim_Branch].[Dim_Branch].[@MEMBER].[49981]')#

[CurrentLevel]:

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()),但是,没有运气。

为什么会发生这种情况以及如何解决这个问题?

这真的超出了我的理解。

感谢您提供任何意见!

1 个答案:

答案 0 :(得分:1)

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

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

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