1.表输入组件
表输入组件用于从数据库连接池中选择源表进行数据的抽取,作为后续组件的数据来源。
时间戳增量(改名为主键+时间戳增量)
它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,业务系统中更新修改表数据的时候,同时修改时间戳字段的值。当执行交换任务表输入时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。
源表主键设置:源表中用来唯一标识记录行的字段,可多选。
时间戳字段:源表中用来存放记录更新时间的字段。
增量历史表的表名为:源表表名_TS
其历史表名为:XXX_TS
全表对比增量
设置后,会将源表主键以及比对字段的值,写入到历史表。每次执行交换任务表输入时,对源表和历史表的比对字段值进行比对,从而决定决定抽取哪些数据。
其历史表名为:XXX_FT
MD5增量
设置后,会将源表主键以及根据比对字段的数据计算出来的MD5校验码,写入到历史表。每次执行交换任务表输入时,对源表和历史表的MD5校验码进行比对,从而决定决定抽取哪些数据。
其历史表名为:XXX_MD
触发器增量
在源表上建立需要的触发器,每当源表中的数据发生变化(插入、修改),就被相应的触发器将变化的数据写入 一个历史表中,当执行交换任务表输入时,通过历史表数据的值来决定抽取哪些数据。
其历史表名为:XXX_TR
最大值增量
其他增量方式会在源表的库里面创建一张增量数据表,但是有时候对于数据库安全性要求较高时不允许用户改动 源库,此时需要一种新的增量:最大值增量来实现该功能。 最大值增量更新方式,与上一次记录的时间戳字段最大值比对,大于上次记录的最大值认为是最新数据进行输出。
此处我们以学生得成绩表XSCJB为例,来设置最大值增量更新。
新建ETL任务,拖入表输入、表输出组件。选择增量更新得方式为最大值增量更新,最大值增量字段为SOURCE字段,选择包含最大值数据,然后执行第一次运行。
在进行第一次运行后,我们可在表输入组件中得增量更新设置中,可查看到上次运行得最大值时多少,图中我们可查看到上次运行任务字段SOURCE得最大值为82.
该最大值支持编辑修改,我们可以修改上次运行最大值,此处我们将其修改为60,然后再次运行该任务。并且查看目标表得数据,发现原表中source大于60得数据又进行了一次数据传输。
此外我们还可以自定义设置最大值数据,通过对上次最大值和本次最大值进行运算自定义出下次ETL任务运行时的最大值。
在此场景中我们自定义设置最大值数据为SOURCE>=@theval_SOURCE-1,其中@theval_SOURCE代表上次运行的最大值,图中我们可得到上次运行的最大值为82,所以我们自定义设置中下次运行的最大值为81,点击运行任务,查看目标表,发现原表中只有source大于81 的数据更新到了目标表中。
注意:
1.最大值数据有三种设置:分别为 包含最大值、不包含最大值和自定义最大值。
包含最大值:例:source>上次最大值 and source<=本次最大值。
不包含最大值:例:source>= 上次最大值 and source< 本次最大值。
自定义最大值:可以针对上次和本次最大值进行运算,支持>、<、<=、>=、=。例:source的上次最大值参数为@LASTVAL_source,本次运行最大值参数为@THEVAL_source。注意下划线后面对应选择的字段。
2.最大值字段支持的字段类型为数值型、时间型、字符型。
2.表输出组件
表输出组件用于将前置组件获取到的结果集,加载到目的连接池的数据库表中。 设置字段映射源表字段和目标表字段对应。
设置映射字段:
表输出字段类型组件在设置字段映射时支持搜索目标表字段。此处我们以ZDSY_XXB_和ICYFP_XXB表为例,将表zdsy_xxb_中的BBQ字段与表ICYFP_XXB中的CYJS 做字段映射。
手动设置字段映射:
新建ETL任务,拖入表输入、表输出组件,表输入组件选择ZDSY_XXB_表,表输出组件中选择ICYFP_XXB。点击字段映射。
通过在字段映射编辑框中的左上方输入对应目标表字段搜索框,输入字段CYJS的名称,就会自动定位到该字段所在的位置。然后手动设置BBQ与CYJS之间的映射即可。
通过导入方式设置字段映射:
除了手动设置字段映射之外,我们还支持通过导入导出的方式批量设置字段映射。
以上述任务为例,我们进入表输出编辑页面,点击导出字段映射关系。导出的文件为xls文件。
文件内容如下
导出完成后我们编辑该文件,找到目标表中的CYJS字段,然后在对应的源字段名称列中手动输入我们所要映射的原表字段,此处我们输入的是原表中的YYS字段,点击保存。
然后再次在表输出字段映射页面点击导入该文件,勾选覆盖已存在的映射关系,导入完成后,查看字段映射关系,发现字段CYJS已经与字段YYS建立了映射关系。
注意:
1.字段映射关系导入准则:
1.1不勾选覆盖映射关系 ,目标表不存在,不会修改已有的信息,只是新增空映射的字段及字段注释。
1.2勾选覆盖映射关系 ,目标表不存在,完全按照表格的显示四列。
1.3不勾选覆盖映射关系 ,目标表存在,不会修改已有的信息,只是新增空映射的字段及字段注释。
1.4勾选覆盖映射关系 ,目标表存在,实际只会追加注释,不会修改目标表已有的注释。
2.设置字段映射时支持搜索目标表字段的组件:表输出组件、主题表输出组件、表流式输出组件、Hadoop输出组件。
更新设置
数据附加
将源数据追加到目标目的表中,若某条源数据记录在目标中已经存在,则忽略该条源数据。
数据覆盖
先将目标表清空(delete),在将源数据插入目标表中。勾选截断表时,会以truncate table的方式清空表。
数据更新
更新目标表中已有的数据,源数据在目标表中的不存在的话,将不作处理。
更新插入
源数据如果在目标表中不存在,则插入该条数据;源数据如果在目标表中存在,则更新该条数据。直接路径插入。勾选后,能提高插入数据的效率。
批量大小
插入数据时,每次批量提交的记录行数。
ETL支持时序数据库
前置条件 :
进行表输入表输出数据采集的过程中,源表需有时间或时间戳字段。目标表需为时序数据库。其余设置与普通表输入表输出用法一致。
注意:时序数据库具体配置方法参考https://blog.csdn.net/m0_37692562/article/details/105201567 时序数据库TimescaleDB 的安装配置
作用 :
1.ETL里面的表输出、表输入组件之类的输入输出组件,支持数据落入或抽取到timescaledb。
2.etl从其他数据库表抽数到时序数据库时,库表不存在则创建的情况下,需要提供扩展属性配置,创建超级表 .
使用说明 :
1.表输入组件连接表输出组件即可。
2.表输入组件中选择的表需有时间字段,在表输出组件中选择已经配置成功的时序数据库。在选择的表输出数据 库连接池为时序数据库时,勾选不存在则创建,目标设置中会自动生成一个创建 超表sql的输入框。如果目标表不是时序数据库,则不会显示这个输入框。
在该输入框中写入创建超表的的sql语句。旁边有语句提示(selectcreate_hypertable('表名','时间或时间戳字段名'),填写完成后点击运行,即可在时序数据库中创建超表。检验超表是否创建成功,可通过查看目标表的表结构,是否自动生成时间或时间戳字段的索引即可。如果有,即 代表超表创建成功,反之则没有创建成功。
3.通过sql输入组件使用时序数据库所支持的6种高级sql函数进行抽取数据。
高级sql函数解析
1.time_bucket() - 用于分析任意时间间隔内的数据
2.first() - 用于根据聚合组中的时间查找最早值
3.last() - 用于根据聚合组中的时间查找最新值
4.time_bucket_gapfill() - 用于分析任意时间间隔内的数据并填充数据中的任何空白
5.locf() - 用于通过将最后观测值向前传递来填充数据中的空白
6.interpolate() - 用于通过线性插值已知数据点之间的缺失值来填充间隙
具体使用见函数文档:https://docs.timescale.com/timescaledb/latest/getting-started/query-data/#advanced-sql-functions-for-time-series-data
支持将字段注释一起输出到目标表中
如目标表已经存在:点击字段映射时,注释根据字段映射添加。规则是不存在着创建(目标注释已存在,源表注释不对目标已有注释进行修改。对目标为空注释进行追加)。关键字索引(Hadoop输出组件除外)根据输出组件勾选的关键字建索引。如果一模一样索引不做新建。此处我们以学生信息表为例xsxxb_表为例。
新建ETL任务,拖入表输入、表输出组件。表输入组件中选择xsxxb_表,该表中的字段均添加了注释信息。
表输出组件选择已存在的表xsxxb_1表,表中字段没有任何注释以及索引,详情见下图。
任务创建好后,我们设置对应的映射关系,点击执行任务,任务执行完成后再去查看xsxxb_1这张表结构,发现表中字段全部添加了注释,注释内容与设置的映射关系完全一致。
2.1切片迁移
为了提升表输出组件的数据传输效率,支持以多线程并发执行的方式将数据写入目标表。
进入表输出组件的目标设置Tab页,在扩展属性中添加
SPLIT_NUMBER=4;
SPLIT_ORDER_FIELD=USERID
其中SPLIT_NUMBER代表切片数量,一个切片的数据将被分到一个线程中执行
其中SPLIT_ORDER_FIELD代表排序组件,切片是根据排序字段排序后再切片的,多个排序字段可以用分号连接,如:USERID,PID
2.2 Doris写入性能优化
为了提升往doris迁移数据的性能,现支持通过文件加载的方式实现数据写入doris库。
进入表输出组件的目标设置Tab页,在扩展属性中添加。
doris_stream_load=true
请先登录