1. 概述编辑
1.1 版本说明
FineDataLink 版本 | 功能变动 |
---|---|
1.6 |
|
4.1.3 | 1)数据来源Tab下,「数据源」中选择DB表输入类型时,新增「配置方式」设置项,「配置方式」设置项中可选择SQL、选表(本版本新增功能)、存储过程(本版本新增功能)
2)Doris、StarRocks 数据源作为写入端,支持自动建表,详情参见本文 4.1.2 节 3)Hive、星环 TRANSWARP INCEPTOR数据库写入数据时,支持分区建表、分区写入 4)可修改目标表的字段名 5)通过「手动建表」功能,可自定义建表的SQL语句,例如修改字段名、字段类型、定义各种表的特性等。 |
查看历史版本更新 | ||||||||||||||||||||||||||||||||
|
1.2 应用场景
用户希望将大量的数据直接抽取同步写入数据库中,且想要同步的数据不需要非常复杂的处理步骤,就可以使用「数据同步」节点。
1.3 功能简介
通过「设置需要抽取的数据」>「设置数据去向及字段映射」>「设置数据写入方式」将数据直接抽取并写入数据库中。
数据来源:设置源表,从哪个数据库的哪张表抽取数据,可写 SQL 语句;4.1.3 及之后版本,支持返回存储过程结果集作为表输入。
数据去向与映射:设置目标表,抽取的数据保存到哪个数据库的哪张表下,可存放到已有的表,也支持自动新建一个表;设置源表跟目标表之间的字段映射关系,支持手动调整映射关系。
写入方式:有三种写入方式:直接将数据写入目标表、清空目标表,再写入数据、基于标识字段,追加/更新/删除数据
注1:数据同步后的定时更新可以参考:数据更新专题
注2:4.0.18 版本移除了「比对字段」和「更新策略」,通过「数据比对」+「DB表输出」的组合方式,可完成增量插入、删除、更新的操作。4.0.18 之前版本用户请查看 历史版本
1.4 前提条件
拥有能够进行数据开发的 FineDataLink 系统用户:用户管理
对用户进行了数据开发权限分配:数据平台使用权限、定时任务管理权限
配置了需要接入 FineDataLink 作为数据来源的数据连接,详情参见:[通用]配置数据连接
2. 使用须知编辑
1)数据存在新增/修改/删除时,根据用户的数据结构和更新需求,我们推荐不同的方案。详情请参见:数据更新专题概述
2)「数据同步」节点与「参数赋值」节点组合使用,可实现数据的增量更新。详情请参见:数据增量更新
3)4.0.28 及之后版本,若用户为以下场景时(来源表和目标表都不是简道云数据):
没有标识字段,希望将筛选出的数据,做追加或者更新或者删除操作(无标识字段时仅允许选择一种操作类型)。
数据已经有了标识字段和标识值,需要对数据进行追加/更新/删除操作。
可通过「数据同步」节点实现,详情请参见:数据同步-基于标识字段,追加/更新/删除数据
3. 数据来源编辑
「数据来源」Tab 界面如下图所示:
若发现取出的数据需要进行一些复杂的操作,例如行列转换、数据关联、JSON解析等数据处理和转换,则可以使用「生成数据转换」功能,
3.1 数据源
FineDataLink支持的数据源 文档的第三章内容(支持数据读取的数据库)。
只展示已配置过数据连接且当前用户有数据连接使用权限的选项。
3.2 配置方式
「数据源」中选择DB表输入类型时,有「配置方式」设置项,「配置方式」设置项中可选择SQL、选表、存储过程。
3.2.1 SQL
通过 SQL 语句从源数据库的表中查询取数,且支持引用参数,参数的具体介绍请参见:参数概述
如下图所示:
3.2.2 选表
页面如下图所示:
支持「选表」功能的算子/节点:
DB表输入、数据同步、参数赋值中,数据源类型选择「DB表输入」类型。
数据服务API「发布内容及参数」中。
1)来源表
选择来源表,不能为空。
2)数据过滤
可为空
可过滤来源表的数据,内容为:使用所选数据库的语法编写 WHERE 条件语句(无需填写 WHERE 关键字)
支持引用各类参数
支持联动参数值;支持联动数据表中字段
不支持写 limit 语句
3)并行取数
在数据量很大时,开启「并行取数」,可提高读取数据的速度。
设置项 | 说明 |
---|---|
并行取数开关 | 默认关闭 同时满足以下三条才生效:
|
切分键 |
|
读取并发数 | 不能为空,用户可修改读取并发数 实际执行时,并发数不会超过 CPU 核数 并发数只代表并发执行的线程数,不代表实际切分的任务数;所以 日志统计Tab下 ,可能会出现并发数为 2 ,实际切分的任务数为 3 的情况 |
3.2.3 存储过程
详情请参见:定时任务调用数据库存储过程
4. 数据去向与映射编辑
「数据去向与映射」Tab 界面如下图所示:
4.1 设置数据去向
4.1.1 数据源/库
选择数据需要写入的数据库。支持的数据库请参见:FineDataLink支持的数据源 文档的第三章内容(支持数据写入的数据库)。
数据源处只展示已配置过数据连接且当前用户有数据连接使用权限的选项。
若数据库有模式,支持选择模式。如下图所示:
模式默认值说明如下:
1)数据库有模式:
若数据连接中已配置模式,默认值为数据连接中配置的默认值。
若数据连接中未配置模式,模式默认值为空,用户自己选择。
2)数据库没有模式,若数据连接中设置了数据库名称,「库」字段默认值为数据库名称,若数据连接中未设置数据库名称,「库」字段默认为空。
3)模式配置项仅选择关系型数据库才出现。
4)目标表如果是「已存在表」,获取的是此目标库/模式下的表;如果是「自动建表」建表建在此目标库/模式下。
4.1.2 目标表
已存在表:是选择目标数据库中已有的表来存放数据。
自动建表:是直接在目标数据库中新建一张表来存放。
注:若选择「自动建表」,未指定模式时,会使用数据库默认模式,而不是数据连接中的模式。
自动建表:
注:StarRocks&Doris支持自动建表的表类型,表名首字母必须为英文,否则建表会失败。
若数据去向选择了「Doris」数据源,则设置去向端表时,需要选择表类型,如下表所示:
表类型 | 建表时设置项说明 |
---|---|
明细模型(Duplicate Key) | 不支持设置物理主键 支持设置 NOT NULL |
主键模型(Unique Key)- 读时合并 | 支持设置物理主键 支持设置 NOT NULL |
主键模型(Unique Key)- 写时合并 | 支持设置物理主键 支持设置 NOT NULL Doris 1.2.0 及以上版本支持使用; |
聚合模型(Aggregate Key) | 此类型不支持自动建表 |
若数据去向选择了「StarRocks」数据源,则设置去向端表时,需要选择表类型,如下表所示:
表类型 | 建表时设置项说明 |
---|---|
明细模型(Duplicate Key) | 不支持设置物理主键 支持设置 NOT NULL |
更新模型(Unique Key) | 支持设置物理主键 支持设置 NOT NULL 当写入方式选择"基于标识字段,追加/更新/删除数据"时,只支持物理删除,不支持逻辑删除。 |
主键模型(Primary Key) | 支持设置物理主键 支持设置 NOT NULL StarRocks 1.19及以上版本支持使用 |
聚合模型(Aggregate Key) | 此类型不支持自动建表 |
已存在表:
若数据去向选择了「Doris」或者「StarRocks」数据源,则设置去向端表时,需要选择表类型,后续设置写入方式时有一定的限制,如下表所示:
表类型 | 写入限制 |
---|---|
明细模型(Duplicate Key) | 无 |
Doris:主键模型(Unique Key)- 写时合并 StarRocks:主键模型(Primary Key) | 当选择"直接将数据写入目标表"时,主键冲突策略只能选择: 主键相同,覆盖目标表的数据 不支持:
|
Doris:主键模型(Unique Key)- 读时合并 StarRocks:更新模型(Unique Key) | |
Doris&StarRocks:聚合模型(Aggregate Key) |
配置主键映射以及主键冲突策略
|
4.2 字段映射
建立「来源端-目标端」的字段对应关系。如下图所示:
注:4.1.3 及之后版本,目标表为 Hive、星环 TRANSWARP INCEPTOR 且选择自动建表时,可选取目标表里的某些字段作为分区键,详情请参见:支持分区建表、分区写入
4.2.1 映射方式
选择源表字段跟目标表字段的映射方式,有两种分别是「同名映射」和「同行映射」。
映射方式 | 匹配逻辑 |
---|---|
同名映射 | 按照目标表字段与来源表字段字符重合的情况匹配,整体逻辑为: 1)根据来源字段,在目标表中寻找同名(字符完全相同)字段对其进行匹配 2)没有同名字段时:
3)如果在目标表中找不到同名或者包含目标表字段字符的字段,则右侧映射字段显示为空 |
同行映射 | 源头字段和目标表字段按顺序匹配:同行则建立映射关系 |
4.2.2 手动建表
目标表选择「自动建表」时,才显示「手动建表」功能。
点击「手动建表」按钮后,用户可修改字段名、字段类型,以及去定义各种表的特性。如下图所示:
1)支持查看和修改建表语句。
建表语句支持「重新获取」,重新获取=重置建表语句。
修改建表语句,不会与字段映射里的配置做联动。
2)修改建表语句后,点击「执行建表」按钮,在数据库中建表成功后,「本文4.1.2 节目标表」处将自动切换为已存在表。
3)「手动建表」中的配置内容,不会在任务运行时生效;用户可手动运行,建表成功后,按照已存在表的逻辑,核对配置是否合理。
4.2.3 编辑映射
1)可对目标表字段做以下设置:
取消某字段的映射
修改字段展示顺序
修改字段类型;修改字段名称
设置主键;设置字段非空
2)用户可自定义设置目标表字段与来源表字段之间的映射关系。如下图所示:
4.2.4 重新获取
源表的字段、字段类型发生改变时,点击该按钮可重新获取,并初始化字段映射界面。
4.2.5 主键
4.0.21 及之后版本,数据去向 Tab 中若选择「自动建表」,字段映射 Tab 中可设置物理主键。
注:若数据去向 Tab 中若选择「自动建表」,字段映射 Tab 中未设置主键,运行任务建表成功后,再次编辑任务,不支持修改主键
4.2.6 注意事项
使用时一些需要注意的点:
1)映射时删除了一些来源表字段,那么切换映射方式后,还是会根据剩下来的这些字段进行调整。
2)手动将映射方式从默认项「同名映射」切换到「同行映射」,点击「重新获取」字段,获取的字段将按照「同行映射」的方式自动匹配。
3)以下两种场景会出现目标表无字段可匹配源头表的情况,在这两种情况下,右侧目标表字段可展示为空:
同名映射:目标表不存在包含源头表字段的字段。
同行映射:源头表字段数量大于目标表字段数量。
4)映射时,如果右侧目标表有空字段,会出现提示图标,悬浮在其上方提示:目标表字段存在空值
5)定时任务运行后,字段映射处不支持修改目标表字段类型。
5. 写入方式编辑
写入方式界面如下图所示:
写入方式有三种:直接将数据写入目标表、清空目标表,再写入数据、基于标识字段,追加/更新/删除数据
注1:不同数据库支持的写入方式不同,具体请参见:不同数据源的功能支持说明
注2:4.1.3 及之后版本,目标表为 Hive、星环 TRANSWARP INCEPTOR 时,支持分区写入。详情请参见:
写入方式 | 说明 |
---|---|
直接将数据写入目标表 | 目标表无物理主键且未配置逻辑主键映射:直接追加写入数据 |
目标表有物理主键或已配置逻辑主键映射:基于主键比对数据行的差异:主键相同、主键不同 1)主键不同的数据行:追加写入 2)主键相同的数据行,提供三种写入策略:
| |
清空目标表,再写入数据 | 直接先把目标表清空掉,然后再写入数据;有无主键均可以选择 |
基于标识字段,追加/更新/删除数据 | 1)目标表无物理主键:写入方式中勾选了「更新」或「删除」时,「主键映射」处不允许为空,需设置逻辑主键 2)目标表有物理主键或已配置逻辑主键映射,识别数据行的标识:相同、新增、修改、删除:
|
5.1 直接将数据写入目标表
5.1.1 主键映射
建立「来源端-目标端」的数据行对应关系,设置步骤如下图所示:
1)目标表中若存在物理主键/自动建表配置了主键,将直接根据目标表物理主键,自动生成主键映射行确定数据唯一性。
2)目标表中若无物理主键:
目标表是自动建表生成的:自动建表时,在「字段映射」处可以手动设定单个或多个字段为物理主键。
目标表是已存在表:「主键映射」处,选择字段作为逻辑主键映射确定数据唯一性,若为空直接追加写入数据。
5.1.2 主键冲突策略
注:目标端为 Hive 时,不支持「主键冲突策略」。
满足以下任一条件,需要选择「主键冲突策略」:
目标表存在物理主键。
目标表不存在物理主键,但配置了逻辑主键。
主键冲突策略有三种:
主键相同,覆盖目标表的数据。
主键相同,忽略输入源的数据。
主键相同,记录为脏数据。
5.2 清空目标表,再写入数据
直接先把目标表清空掉,然后再写入数据;有无主键均可以选择。
目标端为简道云时,不支持该写入方式。
4.0.29 以及之后的版本:
1)当来源表没有主键时,目标表存在主键,进行清表重写时,先清空目标表,再对目标表进行写入;
2)如果此时来源表存在两条主键相同的数据,后一条会覆盖前一条的记录;
5.3 基于标识字段,追加/更新/删除数据
注1:目标端为 Hive 时,不支持该写入方式。
注2:追加/更新/删除可勾选任意一个或多个。
标识字段/标识值:
1)通过标识字段和标识值筛选出需要追加/更新/删除的数据。
2)若使用了「数据比对」算子,则自动读取 fdl_comparison_type 作为标识字段,且自动读取标识字段的值作为标识值。
3)表输出只选择追加/更新/删除其中一个时,「标识值」可不填,不填则对读取的所有数据进行追加或更新或删除。
主键映射:
详情请参考本文 5.1.1 节说明。
1)出现条件:写入方式中勾选了「更新」或「删除」。
2)写入方式中勾选了「更新」或「删除」时,「主键映射」处不允许为空。
6. 示例编辑
简介 | 文档 |
---|---|
A 数据库中的表数据同步到 B 数据库表中 | 数据同步-数据库表 |
API 接口中的数据同步到数据库表中 | 数据同步-API |
服务器数据集中的数据(例如 Excel、CSV 数据),同步到数据库表中 | 数据同步-Excel |
数据库中的数据同步到 FineBI 中 | 数据同步至FineBI |
简道云中的数据同步到数据库表中 | 数据同步-简道云数据 |
使用数据同步节点实现数据的增删改 | 数据同步-基于标识字段,追加/更新/删除数据 |