通过数据交换循环跑批抽取数据入库

253
2

leiz 小试身手Lv3

发表于2024-1-22 15:11

楼主
本帖最后由 leiz 于 2024-1-22 15:21 编辑

本例中的业务场景如下:
某公司有上千名员工,每天都会填写工作周报,现因数据库变更需要将原库中工作周报的业务数据(FACT_GRZB)迁移到另外一张库表(YGXX_)中,考虑到数据量较大,决定根据库表的日期字段(RQ)分批次抽取不同年份的数据。



应用场景:
当源表数据量比较大,全量抽取耗时较长且对数据库压力较大时,可以选择循环跑批分次抽取数据,直到所有数据抽取完成停止抽取。

解决方法:
通过交换任务+任务流两个功能即可实现该操作,具体设置如下:
1、新建一个批处理任务或者交换任务,拖入一个表输入组件并选择原业务库表(FACT_GRZB);
2、在设计区的参数设置入口,新增一个名为year的参数,并设置一个默认值,即从哪一年开始抽取,如图所示:

3、拖入一个过滤组件连接表输入组件,设置自定义过滤条件,将年份的数据过滤出来,如图所示:

4、拖入一个表输出组件连接过滤组件,选择目标表(YGXX_);


到这一步,抽取一年数据的雏形就已经形成了,接下来就是让它实现循环抽取的必要步骤了
5、拖入一个参数赋值组件(在左侧组件树的其他组件中)连接表输出组件,定义参数值为:<#=year#>+1,该设置目的是等执行到参数赋值组件的时候让年份加一;


那么到这一步,我们的交换任务就已经配置好了,设置完成后记得保存发布该交换任务,接下来就需要交换任务流来实现循环执行的功能,具体配置如下:
6、在数据集成-任务管理-设计区-任务流定义中新建一个任务流,在任务流的参数定义中新建2个参数year和count,year参数是用于接受交换任务中设置的year参数值(默认值跟交换任务中设置一样即可),count是用于配置循环次数(默认值不做设置);
7、拖入一个参数赋值组件连接开始组件,分别定义year的参数值为:
<#=year#>,以及count的参数值为:year(today())-2017+1,count参数值表达式的含义为:取当前年份到2017年之间的间隔年份作为循环执行的次数(该设置为循环次数的定义,具体设置可以根据实际业务需要进行调整即可);

8、拖入一个任务组件连接参数赋值组件,选择前面第5步配置好的交换任务,并在该任务组件的循环设置中勾选循环执行当前任务,并配置循环次数为:<#=count#>,也就是我们前面定义的循环次数的参数;


到这一步,我们的循环跑批抽取数据入库的整体设计完成了,当然,设置完成后同样要记得保存并发布任务流,如果只是需要手动执行一次该任务流,只需要点击任务流设计区的运行按钮即可,如果要配置成定时执行的调度任务,那就需要配合任务调度功能实现,这里就不做具体描述了,任务调度的设置大家参考:https://help.esensoft.com/doc-view-687.html


以上便是配置任务循环执行的全部设置,本地交换任务以及任务流导出上传至附件中了,有需要可以下载导入看下具体的设置方法。


任务流.zip (1.8 KB, 下载次数: ) 交换任务.zip (2.83 KB, 下载次数: )

最近看过此主题的会员

xuewj

dora232

数据大白

esen_4Q6MZ9SWVR

wxw

v笑向前走

newstar

esen_4OHFPZIQPQ

yangqh

admin

ESENSOFT官方技术支持

chestnut

pandabuxizao

fenglan

本主题由ESENSOFT官方技术支持于2024-3-19 17:39置顶

2个回答

只看楼主

yangqh 数据老手Lv5

发表于2024-1-22 15:35

只看该作者

取消 关注该作者的回复

沙发

需求场景:需要选择时间段传时间段内的日期做参数,循环执行补跑历史时间段内的的指标数据。
这个需求场景也非常适合用这个循环跑批的方式来做,唯一不太一样的地方就是需要增加【开始时间】和【结束时间】两个参数来选择时间区间,然后循环跑批次数是按照时间区间求出来的,具体操作方式如下:

yangqh 数据老手Lv5

发表于2024-3-19 17:07

只看该作者

取消 关注该作者的回复

板凳

校验及循环任务示例.zip (3.59 KB, 下载次数: )


需求场景:
从库A迁移数据到库B,在迁移每一期数据之前校验库A中表是否有当前期数,如果有数据则执行抽数到库B,如校验查询数据条数为0,暂停当前期数据迁移;等待1小时后再次校验是否有数据,直到校验查询数据条数大于0(即这一期有数据时)才继续执行数据迁移。每一次暂停后,下一次执行需从上次停止的期数开始执行抽数,相当于实现一个半实时半周期性的循环抽数跑批。
任务备份见附件(edg271)

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

渠道咨询电话:137-0120-6790

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号