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. 对于这样的例子,可以实现表的分段抽取、并行装载,效率提升不小;


相关案例
2018 - 08 - 31
点击次数: 10000
1.前言当大家使用DMHS进行数据同步之前,我们需要确保源端和目的端的同步表数据一致。通常我们可以通过DMHS的初始装载功能来把源端数据库装载到源端中,但是在生产环境中,有时候会发现目的端已经有了部分数据。此时为了确保数据不丢失,我们需要对两边数据库的数据做一致性比较,这里我们就可以用到veri工具。本文就将给大家介绍如何配置以及使用DMHS中带的veri工具。2. 测试环境对比环境为一台wind...
2018 - 08 - 24
点击次数: 0
在大家刚刚接触达梦数据库的时候,经常会碰到的一个问题就是网络通讯异常。跟据使用的连接工具不同,问题具体可能表现为网络通讯异常或者socket连接失败。Mana ger下的报错Disql下的报错 当遇到此类报错的时候,我们该如何排查问题呢,本文就将给大家介绍几种可能的错误原因以及排查办法。 一、达梦数据库的服务没有启动1)linux服务器执行 ps -ef|grep d...
2018 - 08 - 10
点击次数: 0
当我们遇到数据迁移的需求时,很多时候出于效率和数据安全的考虑,我们并不想迁移整个数据库或者整张表,而是只想导出其中的一部分数据。DM7中提供了多种图形化以及命令行的工具来满足数据筛选和迁移的要求。本文就将给大家介绍如何在不安装额外软件的情况下,利用达梦数据库自带的工具进行DM7-DM7的数据过滤迁移。解决方案2.1  MANAGER工具2.1.1、利用manager工具进行表数据的过滤和...
2018 - 08 - 03
点击次数: 0
经过前两次的学习,我们知道了如何通过DEM工具和DMAgent来监控主机和数据库的运行状态。但是,DBA们不可能时时刻刻守在屏幕面前查看各项指标,那么,当我们不在系统前的时候,如何得知数据库的各项实时运行状态呢。这时我们就要使用DEM另外的一项强大功能-告警。通过告警,我们可以在数据库运行出现异常的时候,通过邮件或者短信的形式受到通知,从而进行应急处理。本文演示环境:操作系统: Windows S...
2018 - 07 - 27
点击次数: 0
大家知道,达梦数据库支持多用户并发访问、修改数据。在实际工作中,有可能出现多个事务同时访问、修改相同数据的情况,当一个事务正在占用某个资源的锁,此时另一个事务正在请求这个资源上与第一个锁相冲突的锁类型时,就会发生阻塞。此时,被阻塞的事务将一直挂起,直到持有锁的事务放弃锁定的资源为止。本文就将给大家介绍如何使用对应的动态性能视图查看阻塞以及如何解决阻塞。本文实验环境:演示环境:DM Database...
达梦大数据
达梦数据库
支持:dmtech@dameng.com
地址:中国·武汉·东湖新技术开发区高新大道999号未来科技大厦C3栋16-19层
咨询热线:400 991 6599
传真:+86 0755-2788 8009
友情链接:
鄂Copyright ©2017 - 2018 武汉达梦数据库有限公司
犀牛云提供企业云服务
X
3

SKYPE 设置

4

阿里旺旺设置

等待加载动态数据...

等待加载动态数据...

5

电话号码管理

6

二维码管理

等待加载动态数据...

等待加载动态数据...

展开