在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()),然而,沒有運氣。
任何想法爲什麼發生這種情況,以及如何解決它?
這真的超出我的理解。
感謝您的任何意見!
CurrentMember函數有什麼問題?它會給你你在分支維上過濾的成員。然後應用'祖先'功能獲得完整路徑。 – Stoleg
它沒有錯。但是,[CurrentBranch]將始終引用currentMember(....)所引用的相同項目。因此,我認爲寫這個更容易。我不明白這會如何改變行爲?據我所知,祖先([CurrentBranch],1)等於父母([CurrentBranch])? – Skovly