ODI知识模块改造及动态表名抽取数据

来源:互联网 发布:学英语软件排行榜知乎 编辑:程序博客网 时间:2024/05/16 05:34

公司项目背景:我们从下载平台抽取数据,下载平台数据有时会延期,导致可能一天追跑十几天数据。

数据按照日期格式下发,每天一张。

用ODI遇到的难题,如何实现数据快速追跑,表名变化,不用同义词,视图,是否可以实现,如果不是oracle数据库,无法用DBLINK如何办?

深入研究ODI,最后功能实现

现提供想法如下,对ODI变量要仔细区分,刷新变量,设置变量,计算变量,生命变量。

利用设置变量实现在一个事物中表名随着追跑日期变化

知识模块改造如下。

(HIWAN LKM SQL to Oracle)自定义知识模块

主要淘汰掉在数据层反复写数据的过程

具体步奏如下

1.create target table

create table #TABLE_NAME_DATE
(
 <%=snpRef.getTargetColList("", "[COL_NAME]\t[DEST_CRE_DT] " + snpRef.getInfo("DEST_DDL_NULL"), ",\n\t", "")%>
)

2.runcate target table

truncate table #TABLE_NAME_DATE

3.Load data to target table

select <%=odiRef.getPop("DISTINCT_ROWS")%>
 <%=odiRef.getColList("", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", "")%>
from #TABLE_NAME_DATE #TABLE_NAME_DEMO
where (1=1)
<%=odiRef.getFilter()%>
<%=odiRef.getJoin()%>
<%=odiRef.getJrnFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

-----------------------------------------------------------------------------------

要插入的表名及抽取数据的表名用变量代替

----------------------------------------------------------------

如果在包中不需要一次追跑几天数据,则可以借助改造snpw表中SNP_TABLE中源表和目标表名实现。