《培训高级应用》PPT课件.ppt
2008年12月15日,赛意信息科技有限公司,DW DataStage ETL 案例培训 高级应用,缓慢变化维的DataStage实现,概述,部门维是DW常见的纬度,在业务系统维护基础数据,但业务系统一般只保留最新数据,因此DW需要保留历史数据,即实现缓慢变化维。,对于缓慢变化维,常见的做法是新增Begin_Date和End_Date两个字段,通过这两个字段配置记录的有效性;另外,对于在业务系统已经被删除的记录,可在DW新增DELETE_FLAG字段加以标识。,在业务系统里,部门表的唯一索引是DEPT_CODE,而在DW里,部门维表的唯一索引有两个:FIN_DEPT_ID、DEPT_CODE+BEGIN_DATE。,概述(续1),在部门表里,在2008-12-18那天对下面几个记录做了增删改的处理:新增绿洲这个部门、删除美洲这个部门,行政部的第一部门地址由浙江华为修改为广东华为。,概述(续2),BIS在2008-12-19抽取部门表数据,并在DW里经过缓慢变化处理后,数据在部门维表存储如下:,DataStage ETL 高级应用,下面是设计开发完成的实现缓慢变化维的JOB,分三部分:1、取出增、删、改的数据(见蓝色框内容)2、处理增、删部分的数据(见白色框内容)3、处理修改部分的数据(见黑色框内容),点击按钮可进入环境参数定义界面,DataStage ETL 高级应用,配置Src_Before:从部门维取出当前有效的部门维(Src_After从源表取出数据),取出当前有效的部门维,DataStage ETL 高级应用,对比修改前和修改后的数据,在Change_Capture捕捉发生变化的数据,DEPT_CODE作为Key字段,DataStage ETL 高级应用,DSLink11输出的数据流如下:,DataStage ETL 高级应用,在Filter根据change_code对增删改数据进行分流Output Link=0=Lnk_Edit_DataOutput Link=1=Lnk_Ins_Del_Data,DEPT_CODE作为Key字段,这一块分流用作DEBUG,输出到Peek,DataStage ETL 高级应用,在Orac_Target_Table通过SQL写入新增的数据到部门维表,更新被删除数据的Delete_Flag为Y,DataStage ETL 高级应用,下面就是在部门维表里经过处理的新增、删除数据,DataStage ETL 高级应用,Lnk_Edt_Data的数据经过Copy_14拷贝后,一条输出数据流DSLink17与Src_Source的数据流在Join_46关联,取出Src_Source里被修改前的数据:,DataStage ETL 高级应用,在Column_Generator_25给修改前的数据增加change_code字段:,DataStage ETL 高级应用,设置change_code的数据生成规则,DataStage ETL 高级应用,对于修改后的数据也需要新增字段与修改前数据进行匹配:在Column_Generator_47增加Begin_Date等字段,DataStage ETL 高级应用,设置Begin_Date、End_Date等字段的数据生成规则,DataStage ETL 高级应用,然后,在Funnel_27对两个数据流进行合并,输出数据流在Transformer_30根据change_code对Begin_Date等字段进行处理,DataStage ETL 高级应用,在Oracle_Enterprise_32通过SQL写入修改后的数据到部门维表,更新修改前的数据的End_Date等字段,DataStage ETL 高级应用,下面就是在部门维表里经过处理的修改前和修改后的数据,DataStage ETL 高级应用,謝謝大家,