甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
达梦数据库培训干货分享在DMETL中如何实现循环逻辑
发布日期:2020-08-28 10:55:09阅读次数:

For循环的逻辑,在不同的编程语言中有着不同的写法。在做数据抽取的过程中,我们有时候也需要用到循环,那么在DMETL中如何实现类似功能呢?


本文将介绍DMETL中循环逻辑的实现方法。


我们先给出一个现有案例;

案例如下:

t1表约有6亿条数据,需要使用ETL把数据按月抽取到t2表,表结构如下:

createtable t1(ID int primary key,name varchar(10),opt_time(date));

createtable t2(ID int primary key,name varchar(10),opt_time(date));

t1表数据如下:


方法步骤


1. 创建辅助表TAB_MONTH,用来存放月份区段;

CREATETABLE "SYSDBA".TAB_MONTH

(

"ID" INT primary key,

"MONTH_VALUE1" DATE,

"MONTH_VALUE2" DATE,

 cluster primary key("ID"));

值如下:



2. ETL数据源中添加表;

                           


3. 新建关于t1表的参数化SQL查询,作用是查询t1一个月的数据;



查询参数,这里给出实际值,可以查看格式是否正确




4.新建4个变量month1和month2,用来向sql查询t1_sql传递月份值;i,j用来控制循环取值;初始值都是null;



5 . 配置转换流程;

整体转换流程如下:



需要注意的是配置sql查询数据源组件,查询参数这项的配置方法,这里使用的了表达式,参数值调用了用户工程的变量;



6. 配置作业循环执行体,取值内层,先取参数值,传递给转换执行,执行完成后拨动游标;



(1)第一个设置变量的作用是取当前i值对应的月份值;




(2)第二个设置变量的作用相当于拨动游标



7. 配置作业循环取值;



设置变量用来设定i和j的起始值



作业循环取值嵌套的是上面配置的作用内层取值;



它的循环执行选项配置如下:



 小结:

1. etl可实现循环逻辑;

2. sql查询参数化,可使用设置变量赋值;

3. 这里可以对opt_time建立索引进行优化;

4. 如果t1,t2表opt_time字段如果是按范围分区表效率会有不小提升;

5. 对于这样的例子,可以实现表的分段抽取、并行装载,效率提升不小;


 上海腾科教育科技有限公司聚焦ICT人才培养和教育服务、培养数字化时代的新型ICT人才、促进良性的ICT人才生态发展,提供面授教育、在线教育、IT人才培养与就业、高校专业共建与实验室建设、企业人才定制培养,以及教育科技领域内的技术开发、咨询、服务以及解决方案,专注高校ICT课程课件研发、基于华为公有云的云实验实训平台建设,致力于ICT技术在高等院校的引进、开发和推广,是一家全国性的专业ICT行业技术认证服务公司。

腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。