【发布时间】:2019-02-26 14:02:01
【问题描述】:
我的源数据库架构中有一个标量函数,我用它来获取指定帐户的余额。
NVL(MYGL.F_GET_LAST_ACC_BALANCE(ACCOUNTS.ACC_NO, TRUNC(SYSDATE), 1),0)
在 ODI 映射中,我想使用此功能获取帐户余额,然后将它们加载到我的 DWH 数据库中。
我正在将 IKM Oracle Insert 与 DbLink 一起使用。
我尝试在映射中使用 EXPRESSION ,但这并没有给我结果,因为 ODI 尝试在 DWH 端而不是在源端执行 MYGL.F_GET_LAST_ACC_BALANCE。 MYGL.F_GET_LAST_ACC_BALANCE 在源数据库中定义。
这是生成的查询
INSERT
/*+ APPEND PARALLEL */
INTO DWH.FACT_ACCOUNTS
(
REPORT_DATE ,
ACC_NO ,
ACC_PROD_CODE ,
REAL_BALANCE ,
LAST_BALANCE
)
SELECT
TRUNC(SYSDATE) ,
ACCOUNTS.ACC_NO ,
ACCOUNTS.ACC_PROD_CODE ,
ACCOUNTS.ACC_BALANCE ,
(NVL(MYGL.F_GET_LAST_ACC_BALANCE(ACCOUNTS.ACC_NO, TRUNC(SYSDATE), 1),0))
FROM
<schema>.<table>@<dblink_to_source> ACCOUNTS
需要什么
INSERT
/*+ APPEND PARALLEL */
INTO DWH.FACT_ACCOUNTS
(
REPORT_DATE ,
ACC_NO ,
ACC_PROD_CODE ,
REAL_BALANCE ,
LAST_BALANCE
)
SELECT
TRUNC(SYSDATE) ,
ACCOUNTS.ACC_NO ,
ACCOUNTS.ACC_PROD_CODE ,
ACCOUNTS.ACC_BALANCE ,
(NVL(MYGL.F_GET_LAST_ACC_BALANCE@<dblink_to_source>(ACCOUNTS.ACC_NO, TRUNC(SYSDATE), 1),0))
FROM
<schema>.<table>@<dblink_to_source> ACCOUNTS
【问题讨论】:
标签: oracle etl oracle-data-integrator