2013-12-20 20 views
1

在Report Studio中使用TM1立方體時,IF/CASE表達式出現問題。IBM Cognos 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()),然而,沒有運氣。

任何想法爲什麼發生這種情況,以及如何解決它?

這真的超出我的理解。

感謝您的任何意見!

+0

CurrentMember函數有什麼問題?它會給你你在分支維上過濾的成員。然後應用'祖先'功能獲得完整路徑。 – Stoleg

+0

它沒有錯。但是,[CurrentBranch]將始終引用currentMember(....)所引用的相同項目。因此,我認爲寫這個更容易。我不明白這會如何改變行爲?據我所知,祖先([CurrentBranch],1)等於父母([CurrentBranch])? – Skovly

回答

1

發現此解釋,並說「報表表達式旨在訪問參數和報告會話屬性;使用它們訪問查詢項目可能容易出錯」。報告表達是那麼我被稱爲佈局calcualations

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

因此,我打開報告,並直接納入的數據項。這樣一切都按預期工作。

相關問題