ETL平台案例实战.docx
《ETL平台案例实战.docx》由会员分享,可在线阅读,更多相关《ETL平台案例实战.docx(12页珍藏版)》请在冰豆网上搜索。
ETL平台案例实战
ETL平台案例实战
Lab1任务开发和调测
1.1通过插件配置完成一个简单的ETL开发.......................................................
1.2手动本地方式运行ETL...................................................................................
1.3跟踪本地方式运行日志..........................................................................
1.3强制停止本地方式任务实例.........................................................................
1.4手动远程方式运行...................................................................................
1.5跟踪远程实时运行日志................................................................................
1.3强制停止远程方式任务实例.........................................................................
1.4使用JS插件动态获取时间变量.....................................................................
1.4添加注释……………………….....................................................................
1.6小结(Lab1)..............................................................................................
Lab2流程设计和调测
2.1创建一个单层流程......................................................................................
2.2创建一个多层的流程.................................................................................
2.3增加一个数据校验点
2.4增加一个数据校验点
2.5增加异常告警点
2.6小结(Lab2)..............................................................................................
Lab3流程监控
2.1增加一个监控视图......................................................................................
2.2通过监控视图查看流程执行状态..............................................................
2.3查看流程运行时间记录............................................................................
2.3查看校验点输出结果….............................................................................
2.3定位异常................................................................................................
2.3重处理任务................................................................................................
2.6小结(Lab3)..............................................................................................
Lab1任务开发
目标:
将表从数据源库复制到本地库。
1.登陆进入ETL平台,切换到“设计”场景下;
2.展开目录,定位到目录“09测试”下“lab”子目录;
3.右键单击“lab”子目录,选择“新建任务”,弹出任务设计视图,按Ctrl+S或工具栏上的保存按钮进行保存,命名为“T-lab01”,按确定后确认保存成功;
4.切换左侧TAB页签至“插件”栏下,依次从“输入”文件夹拖入“表输入”插件,从“表输出”文件夹中拖入“表输出”插件;
5.选中右侧设计区中“表输入”插件实例,按住shift键同时按下鼠标连接至“表输出”,再次保存;
6.双击“表输入”插件,进入插件参数配置界面。
点击“新建”按钮新建出源表所在的数据库连接,假定源表在166的crm_inter用户下:
将数据库连接取名为LAB(166_crm_inter)
7.点击“测试”,确认配置正确。
点击“确定”返回,在当前页面,再次点击“数据库连接”后的“新建…”按钮,按6同样的方法新建出目标库,这里假定是134的eda用户下,连接名取为“LAB(134_eda)”
8.返回到“表输入”插件配置表单。
将名称改为带业务含义:
“主产品实例源表(562)”,
数据库连接选择“LAB(166_crm_inter)”,在SQL域填入以下内容:
SELECTPRD_INST_ID,PRD_INST_NAME,PRD_INST_DESC,PRD_INST_TYPE_ID,SERVICE_NBR,PHYSICAL_NBR,CUST_AGREEMENT_ID,REGION_ID,SERV_REGION_ID,EXCH_ID,RES_ZONE_ID,URBAN_FLAG,URGE_CD,PRD_INST_STAS_ID,PAY_CUST_ID,USE_CUST_ID,OWN_CUST_ID,CRT_DATE,EFF_DATE,EXP_DATE,MOD_DATE,EFF_STATE,LATN_ID,PRD_ID,OFR_ID,COMPLETE_DATE,SERV_NUM,INSTALL_ADDR,STAND_ADDR,ORDER_ID,CONTRACT_ID,EVOLUTION_PTY_ID,ACCT_ID,USER_BILL_ID,USER_TYPE_ID,USER_KIND_ID,ACCEPT_DATE,ACCEPT_EMPEE_ID,ACCEPT_TYPE_COD,INSTALL_DATE,INSTALL_EMPEE_ID,SUPP_ADDR_DESC,SEND_STATUS,LAST_ORDER_ID,DEV_EFP_DATE,DEV_EXP_DATE,BESP_DATE,BESP_SYMBOL,BILL_DATE,BILL_XCHG_ID,PAY_CYCLE,USER_ACCOUNT,IF_PREPAY,IP_FLAG,BASIC_STATE,EXT_STATE,VOICE_AOC_TYPE,DATA_AOC_TYPE,ISMP_AOC_TYPE,SMS_AOC_TYPE,USE_CUST_NAME1,USE_CUST_NAME2,USE_CUST_NAME3,BUSI_NAME,USE_ADDR,IF_IVPN,LOAD_DATE,LOCAL_PARTITION_IDFROMtb_prd_prd_inst_d_562WHERErownum<=100000
这里表示从源表中复制所有字段,暂取其中的10万行记录;点击“预览(P)”按钮进入数据查看窗体,以此验证SQL配置正确性;
9.在SQLPlus或PL/SQLDeveloper中通过语句创建出目标表:
createtabletb_prd_prd_inst_d_562asselect*fromcrm_inter.tb_prd_prd_inst_d_562@edwwhere1=2;
10.点“确定”后返回,双击“表输出”,按下图输入配置内容,切换至“数据库字段”,点击“获取字段”,所有的默认映射关系已按顺序自动建立。
1.2手动启动本地执行
1.双击“主产品实例接口表(562)”插件实例打开参数编辑状态,基于本地机器性能和网络考虑,临时修改“提交记录数量”为100,表示每100条提交一次,便于看到演示效果;
2.通过点击任务设计区左上角启动按钮,弹出“执行任务对话框”;
3.选择“本地执行”;
4.选中“执行前清理日志”,选择“详细日志”级别;
5.点击“启动”。
1.3实时跟踪本地方式运行实例的执行情况
启动一旦生效,可以看到以下几类执行信息:
1、点击设计区下方“执行结果”栏“执行历史”页签中左上角刷新按钮,可看到当前正在运行的任务实例,以start状态体现,每执行一次这里就会产生条记录;
2、设计区下方“执行结果”栏“日志”页签中显示的是当前实例的实时日志;
3.设计区下方“执行结果”栏“步骤Metrics”显示的是当前任务的步骤信息、记录数信息,动态刷新;
同时通过语句在SQLPlus或PL/SQLDeveloper中查询到目标端的插入记录数;
selectcount(*)fromtb_prd_prd_inst_d_562t
4、任务执行期间,点击任务页签上的叉号,关闭当前任务设计窗体,
通过资源库目录点击再次打开该任务,查看“执行历史”、“日志”和“步骤Metrics”页签内容,刷新到最新状态,可看到当前任务仍处于执行状态,但日志和步骤信息清零;
稍等片刻后,日志出现“任务完成”信息。
上述过程说明,在本地执行时,关闭当前窗体并不关闭任务的执行。
退出平台时,手动方式启动的本地执行实例会自动停止。
5、设计区下方“执行结果”栏“执行历史页签”中,点击已运行完状态为end的实例,在最底下可看到日志信息,处于start状态的日志则没有。
1.4手动启动远程执行
1.点击“当前对象”,右击“子服务器”文件夹“新建”,进入“子服务器对话框”配置界面;
配置如下参数:
配置好的服务器将在远程执行对话框中可选;
2.双击“主产品实例接口表(562)”插件实例,修改“提交记录数量”为10000;
3.通过点击任务设计区左上角启动按钮,弹出“执行任务对话框”;
4.选择“远程执行”及服务器;
5.点击“启动”。
1.5实时跟踪远程方式运行实例的执行情况
1、启动生效后,会自动弹出运行服务器上的实例监控页签,展开任务目录,可以看到当前任务处于Running状态,并有记录数实时提示;
点击“刷新”按钮可以实时看最新的状态信息;
2、选中任务”T-lab01”中的一个步骤,可在下方看到实时输出日志;
3、通过关闭叉号关闭当前监控页:
4、切换至“当前对象”下,通过子服务器右键菜单“监控”,再次激活出“监控”页签;
5、点击设计区下方“执行结果”栏“执行历史”页签中左上角刷新按钮,可看到当前在远程运行的实例同样存有记录,以start状态体现;
2、设计区下方“执行结果”栏“日志”页签中可以看到远程实例的启动时刻信息;“步骤Metrics”无法显示远程执行的任务的步骤信息;
3、退出平台,重新登录,观察正在运行的流程实例是否终止。
Lab2流程设计
目标:
串联Lab1中完成的任务和一个外部程序,形成一个简单可执行的流程。
1.双击Lab1中的任务实例打开,通过另存为形成lab目录下的副本,存为“T-lab02-01”,在Lab2的后面将会引用并做少量调整;
2.右键lab文件夹,选中“新建流程”,新建出一个流程,ctrl+s存为“J-lab02-01”;
3.左边资源页签切换至“插件”,拖入“通用”->“START”插件,切换至“资源库”,选中LAB1中的案例;切换回“插件”页签,拖入“脚本”->“shell”插件;连线成如下形式;
4.配置shell1参数内容,使其指向我们的一个外部程序,参数暂时制定常量值;
5.修改节点名称成如下形式,便于理解。
现在一个流程已经设计完成。
下面我们开始流程的测试。
6.为了快速看到效果,将第一个任务的记录数限制到10万行;
7.点击启动按钮,由于脚本在远程主机服务器上,因此只能选择“远程执行”;
8.启动后,自动弹出的服务器监控中心中,可以找到对应的流程和任务记录:
同样,在执行结果栏中,刷新后能看到执行记录:
9.右键设计区的任务实例:
可以看到下方“执行结果”区域有该任务的执行记录,每运行一次产生一条记录;
再次查看监控中心日志:
待完成后,通过SQL语句查询结果表数据:
select*fromlab_ft_prd_instt
2.2创建一个多层的流程.................................................................................13
目标:
我们将引用Lab2.1中的流程,模拟全省数据的处理流程。
先并行做完3个地市的数据处理后,再做下一步的环节。
单本地网做接口表抽取、基础集市表数据整合,全省做完这两步后,再进行基础集市表向汇总集市表的生成。
1.双击T-lab02-01中的任务实例打开,通过另存为形成lab目录下的副本,存为“T-lab03-01”,在该例子中我们将对其做少量调整;
2.打开“T-lab03-01”的“任务设置”选项;
3.通过“参数”页签增加p_latn变量,使其成为可被复用的任务;
4.修改任务名称如下:
5.修改任务配置内容,使其中的562以变量形式替换:
6.现在可以测试该任务,远程方式启动,在p_latn参数中输入562:
通过弹出的服务器监控页签确认任务正确运行完毕;
将“J-lab02-01”另存为“J-lab03-01”,修改其中的结点名称及配置项信息:
增加流程“J-lab03-01”的预设参数:
现在我们可以测试一下流程的执行情况,仍然选择远程方式启动。
该流程需输入日期和本地网两个参数。
通过弹出的服务器监控页签确认任务正确运行完毕;
7.新建一个流程,保存为“J-lab03-02”。
在其中重复拖出三份J-lab03-01(可配置好一个后复制),并做如下连线,模拟并行方式运行三个地市的数据:
其中J-lab03-01实例的配置参考,564,566规则一致;
设定并行方式运行:
连线变成虚线即为生效。
预设“J-lab03-02”自身的流程参数:
8.现在我们可以测试一下“J-lab03-02”的运行情况:
9.发现运行出错,其中除了562运行正确外,其它都是错,原因是接口目标只建了562的。
补充其它两张表的建立:
createtabletb_prd_prd_inst_d_564asselect*fromcrm_inter.tb_prd_prd_inst_d_564@edwwhere1=2;
createtabletb_prd_prd_inst_d_566asselect*fromcrm_inter.tb_prd_prd_inst_d_566@edwwhere1=2;
再运行一次,确认成功后,通过SQL语句统计结果信息:
selectlatn_id,count(*)fromlab_ft_prd_instgroupbylatn_id;
新建一个流程,命名为“”保存,拖入以下结点再保存;J-lab03-02作为这里的一个子流程;
为汇总脚本程序录入信息:
向“J-lab03-02”子流程传递参数:
为“J-lab03-03”当前流程预设参数:
到此,我们可以对J-lab03-03进行测试,运行完毕后,可以执行以下语句确认结果:
selectlatn_id,count(*)fromlab_dm_serv_numgroupbylatn_id;
Lab3流程监控
1.新建一个监控视图
2.右键视图设置:
重命名为LAB01,
3.从资源库中拖入我们已设计好的流程“J-lab03-03”,通过画框和颜色设置功能调整外观;
4.保存并发发布监控视图:
5.切换到“监控”场景下,从左侧“监控”目录定位到“LAB01”,双击打开。
可以看到绿色的状态脚标,这是我们之前运行成功的记录,由于监控周期设置为一天,显示的一天内能找到的最新的实例状态。
6.双击“J-lab03-03”流程,打开流程明细;
可以看到,其中的子流程和脚本任务都是运行正常的;并且在下方运行结果中可以看到运行的开始时间、结束时间、耗时。
7.再双击“J-lab03-03”流程中的“J-lab03-02”流程,查看子流程明细;
现在重启整个流程,查看各流程和任务的处理状态;
8.在“J-lab03-03”
9.切换至监控视图页,逐层查看各层的状态,看是否与下列图片符合:
稍等片刻,所有结点又会变成成功的绿色图标。
现在我们演练一下流程报错的情况,查看各流程和任务的处理状态;
10.通过SQL语句删除掉其中一个中间表:
droptabletb_prd_prd_inst_d_566;
11.在“J-lab03-03”
12.切换至监控视图页,逐层查看各层的状态,看是否与下列图片符合:
现在我们演练一下重运行处理的操作。
新增加一个数据校验点.
13.转到”设计”场景下,打开“J-lab03-03”流程,通过”资源库”下,增加一个Gereral->DataVerify插件。
首先,我们希望校验结果表中3个地市的数据是否全部到位,下面将在拖出的校验插件上配置这样的规则项:
14.双击校验插件,重命名名称为“资料结果汇总校验”,单击“添加规则”按钮;
15.在弹出的表单中重命名为“数据完整性校验(全省数据是否到位)”;
16.进行规则SQL项的配置:
在ETL平台的校验设计体系下,所有的校验被抽象成一双成对的数据集比对过程,这两个数据集分别由两个自定义的SQL查询语句来驱动,并通过匹配键值自动进行数据关联,对每一条结果集记录判断是否通过按预设规则。
同时,输出结果可以按照自定义的表头设定显示,形成一张直观的小型报表。
校验支持多记录、多维度、多度量指标、内嵌变量。
该例中,校验对象值是当前数据中不同本地网个数,参考对象值为常量3,不存在匹配的维度字段,由于统一设计的考虑,需要虚拟出一个’*’字段,用作校验对象与参考对象的匹配键,并取别名ColId。
校验对象:
SELECT'*'asColId,
count(DISTINCTlatn_id)aslatn_count
FROMlab_dm_serv_numa
WHERE
参考对象:
SELECT'*'asColId,
3asRef_count
FROMduala
设置“校验对象”查询SQL,配置后点击“SQL结果预览”验证是否输出征程。
注意:
这里的SQL语句不允许以;号结束。
设置“参考对象”查询SQL。
在“校验结果”页签中,进行校验对象与参考对象结果集关联键的设置过程,选定COLID作为关联键,删除其它字段。
按图示的1、2、3、4、5操作顺序配置如下。
5中表达式定义的规则为:
将当前值与参考值(这里是3)进行加减运算,结果值一定要为0,否则视为校验失败。
在“输出结果”页签中配置输出结果的表头显示信息,按照业务需要定义如下:
我们现在可以将整个“J-lab03-03”流程运行一次,待校验插件执行成功后,通过右键“查看校验结果”查看结果信息。
当看到如下信息时,标明配置过程是成功的。
上面的规则只设计到对一个单记录与常量进行比较,下面将演练一个更为典型的校验场景。
17.双击现有校验插件实例,增加一个新的规则,命名为“按地市校验用户数波动”。
配置目标是:
拿今天的数据按地市groupby聚合统计用户数,与昨天进行比较,在产品类型粒度进行逐个比较,查看是否存在波动较大的情况。
设置校验对象:
SELECTlatn_id,sum(serv_num)asserv_num
FROMlab_dm_serv_numa
WHERE
groupbylatn_id
设置参考对象:
(这里直接用当日数据模拟前日数据)
SELECTlatn_id,sum(serv_num)+1000asserv_num
FROMlab_dm_serv_numa
WHERE
groupbylatn_id
设置关联字段和校验公式,这里我们设置阀值为正负10%以内;
设置结果输出表头信息,这里我们可以选定波动比#.##格式保留两位小数
再次运行流程,验证是否能输出如下记录;