2016-02-08 29 views
0

基於if條件可以送入元素嗎?根據TM1中的條件使用送料器

以下是用於評估驗證值的規則計算。

[{'AOP_v1','Forecast_v1'},'Validation', 'Rate'] = N: 

IF(ROUNDP(['Phasing Total', 'Rate'] * 100, 5) = 100 % ROUNDP(['Phasing Total', 'Rate'] * 100, 5) = 0, STET, 1); 

有沒有一種方法,我可以養活[{ 'AOP_v1', 'Forecast_v1'}, '確認', '價格']與[ '調相總', '價格']只有當..

ROUNDP(['Phasing Total','Rate'] * 100,5)= 100%ROUNDP(['Phasing Total','Rate'] * 100,5)= 0

Phasing Total Validation

回答

0

您可以通過使用上料機的右手側的DB()函數創建條件飼養。您可以使用If()函數,該函數在邏輯條件評估爲True時返回要饋入的多維數據集的名稱,而不是在數據庫公式中使用多維數據集名稱進行硬編碼:

['FeedFrom']=>DB(IF(YourLogicalTest,'NameOfCube',''), !Dim1, !Dim2, 'Element'); 

顯然這只是僞代碼; DB函數可以使用當前元素引用(!運算符)和硬編碼元素名稱的各種組合。但關鍵點是,如果If()測試返回一個空字符串,那麼顯然DB()函數並沒有定義任何要饋入的東西。

我會推薦閱讀this IBM article規則和飼養一般。 This thread on TM1Forum包含一些關於是否應該使用條件饋線的討論,或者尋找其他方式。

另一個需要考慮線程後日期的因素;在較新版本的TM1中,您可以使用多線程加載來將負載提高到內存時間。但是,如果您使用條件饋線,則必須回到單線程負載。這可能會對您產生微不足道的影響,或者可能會很大。

+0

Alan, 我試過這些規則,它的工作! ('Phase Phase Total'] = 0%['Phasing Total'] = 1,'','in_Theatrical_Phasing'),'AOP_V1',!Theatrical_Territory,!Phasing_Model ,'Validation',!in_Theatrical_Phasing_Measure); ('Phase Phase')= 0%['Phasing Total'] = 1,'','in_Theatrical_Phasing'),'Forecast_v1',!Theatrical_Territory,!Phasing_Model ,'Validation',!in_Theatrical_Phasing_Measure); –

+0

我曾經從一位同事那裏聽說,澳大利亞有優秀的TM1大師。但是,如果每次我尋找與TM1相關的答案,我的判斷就是你的名字出現了,我相信你一直都是! 我向你致敬Alan!我希望有一天能夠徹底瞭解TM1。乾杯! –