English
购物车图片 购物车 ( )
最专业的品牌服务,为您创造更高的价值
总体概述 客户评价

【干货分享】在DMETL中如何实现循环逻辑


【干货分享】在DMETL中如何实现循环逻辑

2018年3月23日


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表数据如下:

【干货分享】在DMETL中如何实现循环逻辑

方法步骤

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

CREATETABLE "SYSDBA".TAB_MONTH

(

"ID" INT primary key,

"MONTH_VALUE1" DATE,

"MONTH_VALUE2" DATE,

 cluster primary key("ID"));

值如下:

【干货分享】在DMETL中如何实现循环逻辑

 2. ETL数据源中添加表;                  

【干货分享】在DMETL中如何实现循环逻辑

 

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

 

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑 

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

【干货分享】在DMETL中如何实现循环逻辑

5 . 配置转换流程;

整体转换流程如下:

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

7. 配置作业循环取值;

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

 小结:

1. etl可实现循环逻辑;

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

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

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

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


客户资料:
年缴保费:
客户需求:


【干货分享】在DMETL中如何实现循环逻辑

2018年3月23日


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表数据如下:

【干货分享】在DMETL中如何实现循环逻辑

方法步骤

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

CREATETABLE "SYSDBA".TAB_MONTH

(

"ID" INT primary key,

"MONTH_VALUE1" DATE,

"MONTH_VALUE2" DATE,

 cluster primary key("ID"));

值如下:

【干货分享】在DMETL中如何实现循环逻辑

 2. ETL数据源中添加表;                  

【干货分享】在DMETL中如何实现循环逻辑

 

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

 

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑 

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

【干货分享】在DMETL中如何实现循环逻辑

5 . 配置转换流程;

整体转换流程如下:

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

7. 配置作业循环取值;

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

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

【干货分享】在DMETL中如何实现循环逻辑

 小结:

1. etl可实现循环逻辑;

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

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

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

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


相关案例
2019 - 01 - 25
点击次数: 10000
在达梦数据库的日常使用中,大家可能会碰到这样一种情况。主机编码方式非unicode,数据库以unicode编码建库,此时如果生成以中文命名的备份集。如:当使用该备份集进行还原等操作时,因编码不一致,导致备份集解析后从本地读取备份片文件时,找不到而报错。遇到这种情况的时候,小伙伴们也不要慌张,接下来我们会给出几个可行的解决方案。 解决方案:以上述备份集为例,介绍解决步骤。1、 &...
2019 - 01 - 11
点击次数: 10000
在前两期的分享中,我们介绍了在做单表及多表查询时用到的SQL操作符。本次,我们就来讲一讲过滤和分组排序时用到的操作符。 过滤条件:SLCT这类操作符比较简单,是对结果集进行过滤,需要注意的是操作符的描述信息,从描述信息中我们可以看到对于下层操作有哪些可用的过滤条件,这些条件往往是优化方向的来源。需要关注的是SLCT 的描述部分  (exp_cast(T2.ID) 5 AND ...
2019 - 01 - 04
点击次数: 10003
在上期的分享《达梦SQL优化——基础篇》中,我们学习了做单表查询时常见的SQL操作符,这次我们就来看看多表查询中的操作符。01多表连接操作符在做多表连接查询时,我们可能会碰到的SQL操作符有以下几种类别:NEST LOOP   嵌套循环连接HASH JOIN    哈希连接INDEX JOIN   索引连接MERGE JOIN&...
2018 - 12 - 29
点击次数: 10000
在数据库的使用中,书写正确的SQL语句只是完成了万里长征的第一步。事实上,在DBA的日常的工作中,SQL优化占据了很大的一部分的内容,本文就将给大家介绍一些SQL优化有关的基础知识。 1.基本概念在理解如何优化SQL语句之前,我们首先要了解几个基本概念1.1执行计划执行计划是SQL语句的执行方式,由查询优化器为语句设计的执行方式,交给执行器去执行。在SQL命令行使用EXPLAIN可以打印...
官网微信公众号官方微信公众号
官方技术咨询群官方技术咨询群
支持:dmtech@dameng.com
地址:中国·武汉·东湖新技术开发区高新大道999号未来科技大厦C3栋16-19层
咨询热线:400 991 6599
传真:+86 0755-2788 8009
友情链接:
鄂Copyright ©2017 - 2018 武汉达梦数据库有限公司
犀牛云提供企业云服务
X
3

SKYPE 设置

4

阿里旺旺设置

等待加载动态数据...

等待加载动态数据...

5

电话号码管理

6

二维码管理

等待加载动态数据...

等待加载动态数据...

展开