首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Data Integrator标量函数用法

Oracle Data Integrator标量函数用法
EN

Stack Overflow用户
提问于 2019-02-26 22:02:01
回答 1查看 127关注 0票数 4

我在我的源数据库模式中有一个标量函数,我使用它来获取指定帐户的余额。

代码语言:javascript
复制
NVL(MYGL.F_GET_LAST_ACC_BALANCE(ACCOUNTS.ACC_NO, TRUNC(SYSDATE), 1),0)

在ODI映射中,我想使用此函数来获取帐户余额,然后将它们加载到我的DWH DB中。

我正在使用IKM Oracle Insert和DbLink。

我尝试在映射中使用表达式,但是没有给出结果,因为ODI试图在DWH端而不是源代码端执行MYGL.F_GET_LAST_ACC_BALANCEMYGL.F_GET_LAST_ACC_BALANCE在源数据库中定义。

这是生成的查询

代码语言:javascript
复制
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   

它应该是什么样子

代码语言:javascript
复制
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  

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 15:05:09

也许你需要的是它对于使用预定义的Oracle KM来说太过定制了。

我认为一个解决方案是使用另一个IKM,它不使用DBLINK,而是使用JDBC连接(通过物理模式中定义的jdbc直接连接到源)。

这样,您的代码将直接在源代码上执行,并且该函数将被识别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54887253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档