EDW项目中ODS源接口表清单维护方案

1ODS的接口表信息保存在一个EXCEL表中

该表格有如下特性:

1)、所有的接口清单都在一个工作簿中;

2)、每一个sheet中存放来自一类源业务系统表的接口信息;

3)、不同阶段的接口表,只要是来自同一个源业务系统,都放在同一张sheet中,有[阶段]字段加以区分;

4)、每个sheet中也都会有一个[业务系统]字段,但对于同一个sheet,其应是同一值;

5)、对于一个sheet,可以添加一些衍生字段,如[edw期望加载方式][接口表测试环境存在情况][接口提出时间]等,但最重要的无非是下表所列示的7个;

6)、每一个sheet中都使用相同的表结构格式。

阶段

业务系统

业务系统中文名

业务系统原表名

ODS表名

ODS加载方式

备注

仓库1

CMIS

授信合同

CMIS_SXHT

ODS_CMS_CMIS_SXHT

增量

 

仓库1

CMIS

担保合同

CMIS_DBHT

ODS_CMS_CMIS_DBHT

增量

 

仓库2

WFM

其他抵押资产

BIZ_COLLATERAL_ACCEPTANCEBILL

ODS_WFM_BIZ_COL_BA

全量

 

仓库2

WFM

产品列表

BIZ_PRODUCT

ODS_WFM_BIZ_PRODUCT

全量

 

2、元数据进仓

初期,ODS要提供的接口表信息是存储在如上的EXECL表格中的。为了入仓及其他一些方面的应用,需要将EXECL中的清单信息导入到数据库中。

1)、存储ODS源接口表的表结构

 -- Create table create table EDW_ODS_TAB_SRC ( STAGE VARCHAR2(18), SRC_SYS VARCHAR2(18), SRC_TAB_NAME_CN VARCHAR2(36), SRC_TAB_NAME VARCHAR2(30), ODS_TAB_NAME VARCHAR2(30), ODS_LOAD_TYPE VARCHAR2(18), REMARK VARCHAR2(100) ); -- Add comments to the table comment on table EDW_ODS_TAB_SRC is '数据仓库源数据接口清单表'; -- Add comments to the columns comment on column EDW_ODS_TAB_SRC.STAGE is '阶段'; comment on column EDW_ODS_TAB_SRC.SRC_SYS is '业务系统'; comment on column EDW_ODS_TAB_SRC.SRC_TAB_NAME_CN is '业务系统表中文名'; comment on column EDW_ODS_TAB_SRC.SRC_TAB_NAME is '业务系统表原名'; comment on column EDW_ODS_TAB_SRC.ODS_TAB_NAME is 'ODS表名'; comment on column EDW_ODS_TAB_SRC.ODS_LOAD_TYPE is 'ODS数据加载方式'; comment on column EDW_ODS_TAB_SRC.REMARK is '备注';

2)、生成插入库初始化脚本的perl程序

 ###################################################################### use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; ###################################################################### $Win32::OLE::Warn = 3; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $fielname = q(C:/Users/nisj/Desktop/仓库源数据接口清单表设计/数据仓库源系统接口表格式.xls); my $Book = $Excel->Workbooks->Open("$fielname"); open(F,'>C:/Users/nisj/Desktop/仓库源数据接口清单表设计/Ods_Interface_Data_Int.SQL'); print F "TRUNCATE TABLE EDW_ODS_TAB_SRC;"; print F "/n"; foreach my $Sheetnum(1..$Book->Worksheets->count){ my $Sheet = $Book->Worksheets($Sheetnum)||die "over"; my $Source_Business_Systems = $Sheet->{Name}; print F "--源业务系统:【$Source_Business_Systems】接口表的加载..."; print F "/n"; my $error_count = 0; for(my $ROW = 2;;$ROW++){ last if ($error_count == 1); ($error_count++,next) unless defined $Sheet->Cells($ROW,5)->{'Value'}; my $stage = $Sheet->Cells($ROW,1)->{'Value'}; $stage=uc($stage); my $src_sys = $Sheet->Cells($ROW,2)->{'Value'}; $src_sys=uc($src_sys); my $src_tab_name_cn = $Sheet->Cells($ROW,3)->{'Value'}; $src_tab_name_cn=uc($src_tab_name_cn); my $src_tab_name = $Sheet->Cells($ROW,4)->{'Value'}; $src_tab_name=uc($src_tab_name); my $ods_tab_name = $Sheet->Cells($ROW,5)->{'Value'}; $ods_tab_name=uc($ods_tab_name); my $ods_load_type = $Sheet->Cells($ROW,6)->{'Value'}; $ods_load_type=uc($ods_load_type); my $remark = $Sheet->Cells($ROW,7)->{'Value'}; $remark=uc($remark); print F "INSERT INTO EDW_ODS_TAB_SRC(STAGE, SRC_SYS, SRC_TAB_NAME_CN, SRC_TAB_NAME, ODS_TAB_NAME, ODS_LOAD_TYPE, REMARK)"; print F "VALUES(TRIM('$stage'), TRIM('$src_sys'), TRIM('$src_tab_name_cn'), TRIM('$src_tab_name'), TRIM('$ods_tab_name'), TRIM('$ods_load_type'), TRIM('$remark'));/n"; } print F "commit;/n"; } # clean up after ourselves $Book->Close; close(F);

3、此方案只是针对ODS源表的接口清单元数据入仓的方便,其他的诸如SDM映射关系元数据入仓都是同样的道理。

你可能感兴趣的:(cms,Excel,Microsoft,table,数据仓库,Comments)