LOOKUP (Standard only)
LOOKUP (Standard only)
LOOKUP
- 可在相同或不同模型下进行数据读取,比如在translate一些汇率转换中会需要用此逻辑脚本。WHEN/ENDWHEN语法紧跟在LOOKUP/ENDLOOKUP之后,用来计算一个新的值或者定义要被计算的条件。
- LOOKUP机制原理是对应了待被处理记录与预设值相对应数值之间的关系。
Syntax
- *LOOKUP (app name——区分大小写)
- *DIM [{LookupID}:{Diememtion}] (读取范围)
- *DIM MEASURES = YTD/PERIODIC (当两个不同时)
- *ENDLOOKUP
- ----
- *WHEN ACCOUNT
- *IS *
- *REC {factor = LOOKUP{VARIABLE},INPUTCURRENCY=USD}
- *ENDWHEN
- 单个变量
例子:
Rate模型中待取的数如下
Category | InputCurrency | R_ACCT | R_ENTITY | TIME | SignData |
---|---|---|---|---|---|
ACTUAL | EUR | AVG | GLOBAL | 2017.01 | 0.78 |
ACTUAL | USD | AVG | GLOBAL | 2017.02 | 1.0000 |
我们需要在ZRB模型中取出汇率用于计算以LC的换算价格。
TIME | P_ACCT | ENTITY | P_ACTIVITY | CATEGORY | Currency | P_DATASRC | SignData |
---|---|---|---|---|---|---|---|
2017.01 | 410000 | C101 | NONE | ACTUAL | LC-RMB | INPUT | 800 |
用户在对话框中选择相应的汇率,使LC转变为目标汇率
script
- *SELECT(%CUR%, "[ID]", RPTCURRENCY, [REPORTING] = Y)
- *LOOKUP Rates
- *DIM CATEGORY = Actual
- *DIM R_ACCOUNT = AVG
- *DIM R_ENTITY = Global
- *DIM TIME = TIME
- // *DIM MEASURES = "PERIODIC"
- *FOR %LOOP_CUR% = %CUR%
- *DIM C_%LOOP_CUR%:INPUTCURRENCY = %LOOP_CUR%
- *NEXT
- *DIM RATESOURCE:CATEGORY = Actual
- *DIM RATESOURCE:R_ENTITY = Global
- *DIM RATESOURCE:INPUTCURRENCY = RB_ENTITY.CURRENCY
- *DIM R_ACCOUNT = RB_ACCOUNT.RATETYPE
- *DIM RATESOURCE:TIME = TIME
- *ENDLOOKUP
- *XDIM_MEMBERSET RBPRODUCT = CK2000
- *XDIM_MEMBERSET RPTCURRENCY = LC
-
- *WHEN RB_ACCOUNT
- *IS 410000
- *FOR %LOOP_CUR% = %CUR%
- *REC(EXPRESSION = %VALUE% * LOOKUP(C_%LOOP_CUR%)/LOOKUP(RATESOURCE), RPTCURRENCY = %LOOP_CUR%)
- *NEXT
- *ENDWHEN
![2017-11-13 11_13_32-translate - Excel enter description here](http://oz4x9rr8f.bkt.clouddn.com/%E5%B0%8F%E4%B9%A6%E5%8C%A0/2017-11-13%2011_13_32-translate%20-%20Excel.png)
2017-11-13 11_13_32-translate - Excel
计算逻辑:
1)判断C100的本位币LC是什么
2)汇率表以何为本位币
3)目标模型LC汇率转换未汇率表本位币 (ACCOUNTLC/变量:entity.currency)
- USD=%VALUE%/(变量:entity.currency=LC)*USD_RATES ;
- RMB =%VALUE%/(变量:entity.currency=LC)*RMB_RATES
- 以下为不使用变量与loop情况下的script
- *LOOKUP Rates
-
- *DIM RATEEUR:CATEGORY=Actual
- *DIM RATEEUR:R_ENTITY=Global
- *DIM RATEEUR:INPUTCURRENCY=EUR
- *DIM RATEEUR:TIME=TIME
-
- *DIM RATEUSD:CATEGORY=Actual
- *DIM RATEUSD:R_ENTITY=Global
- *DIM RATEUSD:INPUTCURRENCY=USD
- *DIM RATEUSD:TIME=TIME
-
- *DIM RATERMB:CATEGORY=Actual
- *DIM RATERMB:R_ENTITY=Global
- *DIM RATERMB:INPUTCURRENCY=RMB
- *DIM RATERMB:TIME=TIME
-
- *DIM RATESOURCE:CATEGORY=Actual
- *DIM RATESOURCE:R_ENTITY=Global
- *DIM RATESOURCE:INPUTCURRENCY=RB_ENTITY.CURRENCY
- *DIM R_ACCOUNT=RB_ACCOUNT.RATETYPE
- *ENDLOOKUP
- *XDIM_MEMBERSET RBPRODUCT = CK2000
- *XDIM_MEMBERSET RPTCURRENCY =LC //在UJKT中多次执行也不会累积计算
- *WHEN RB_ACCOUNT
- *IS *
- *REC(EXPRESSION=%VALUE%*LOOKUP(RATEEUR)/LOOKUP(RATESOURCE),RPTCURRENCY=EUR)
- *REC(EXPRESSION=%VALUE%*LOOKUP(RATEUSD)/LOOKUP(RATESOURCE),RPTCURRENCY=USD)
- *REC(EXPRESSION=%VALUE%*LOOKUP(RATERMB)/LOOKUP(RATESOURCE),RPTCURRENCY=RMB)
- *ENDWHEN