1. 概述编辑
1.1 版本说明
FineDataLink 版本 | 功能变动 |
---|---|
1.6 |
|
4.0.28 |
|
4.0.29 |
|
4.0.30 | 字段映射中可支持搜索字段 |
4.1.3 | Doris、StarRocks 数据源作为写入端,支持自动建表,详情参见本文 4.1.2 节 |
查看历史版本更新 | ||||||||||||||||||||||||||
|
1.2 应用场景
用户希望将大量的数据直接抽取同步写入数据库中,且想要同步的数据不需要非常复杂的处理步骤,就可以使用「数据同步」节点。
1.3 功能简介
通过「设置需要抽取的数据」>「设置数据去向及字段映射」>「设置数据写入方式」将数据直接抽取并写入数据库中。
数据来源:设置源表,从哪个数据库的哪张表抽取数据,可写 SQL 语句。
数据去向与映射:设置目标表,抽取的数据保存到哪个数据库的哪张表下,可存放到已有的表,也支持自动新建一个表;设置源表跟目标表之间的字段映射关系,支持手动调整映射关系。
写入方式:有三种写入方式:直接将数据写入目标表、清空目标表,再写入数据、基于标识字段,追加/更新/删除数据。
注1:数据同步后的定时更新可以参考:数据更新专题
注2:4.0.18 版本移除了「比对字段」和「更新策略」,通过「数据比对」+「DB表输出」的组合方式,可完成增量插入、删除、更新的操作。4.0.18 之前版本用户请查看 历史版本
1.4 前提条件
拥有能够进行数据开发的 FineDataLink 系统用户:用户管理
对用户进行了数据开发权限分配:数据平台使用权限、定时任务管理权限
配置了需要接入 FineDataLink 作为数据来源的数据连接,详情参见:[通用]配置数据连接
2. 使用须知编辑
1)数据存在新增/修改/删除时,根据用户的数据结构和更新需求,我们推荐不同的方案。详情请参见:数据更新专题概述
2)「数据同步」节点与「参数赋值」节点组合使用,可实现数据的增量更新。详情请参见:数据增量更新
3)若用户为以下场景时(来源表和目标表都不是简道云数据):
没有标识字段,希望将筛选出的数据,做追加或者更新或者删除操作(无标识字段时仅允许选择一种操作类型)。
数据已经有了标识字段和标识值,需要对数据进行追加/更新/删除操作。
可通过「数据同步」节点实现,详情请参见:数据同步-基于标识字段,追加/更新/删除数据
3. 数据来源编辑
「数据来源」Tab 界面如下图所示:
设置项介绍如下表所示:
设置项 | 说明 |
---|---|
数据源 | FineDataLink支持的数据源 文档的第三章内容(支持数据读取的数据库) 只展示已配置过数据连接且当前用户有数据连接使用权限的选项 |
SQL 语句 | 通过 SQL 从源数据库的表中查询取数,且支持引用定时任务中的参数,参数的定义和使用方式可参见文档 自定义参数 |
数据预览 | 可查看当前语句对应的数据,一般用来检查语句写得对不对,预览时最多只显示 20 行且与实际数据可能存在差异 |
此时若发现取出的数据需要进行一些复杂的操作,例如行列转换、数据关联、JSON解析等数据处理和转换,则可以使用「生成数据转换」功能,将根据数据同步节点的数据来源和去向设置,新增一个「数据转换」节点,你可以使用数据转换替代数据同步进行复杂的数据处理工作。
注:详情请参见:生成数据转换
4. 数据去向与映射编辑
「数据去向与映射」Tab 界面如下图所示:
4.1 设置数据去向
4.1.1 数据源/库
选择数据需要写入的数据库。支持的数据库请参见:FineDataLink支持的数据源 文档的第三章内容(支持数据写入的数据库)。
数据源处只展示已配置过数据连接且当前用户有数据连接使用权限的选项。
若数据库有模式,支持选择模式。如下图所示:
模式默认值说明如下:
1)数据库有模式:
若数据连接中已配置模式,默认值为数据连接中配置的默认值。
若数据连接中未配置模式,模式默认值为空,用户自己选择。
2)数据库没有模式,若数据连接中设置了数据库名称,「库」字段默认值为数据库名称,若数据连接中未设置数据库名称,「库」字段默认为空。
3)模式配置项仅选择关系型数据库才出现。
4)目标表如果是「已存在表」,获取的是此目标库/模式下的表;如果是「自动建表」建表建在此目标库/模式下。
4.1.2 目标表
已存在表:是选择目标数据库中已有的表来存放数据。
自动建表:是直接在目标数据库中新建一张表来存放。
注:若选择「自动建表」,未指定模式时,会使用数据库默认模式,而不是数据连接中的模式。
自动建表:
若数据去向选择了「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 字段映射
建立「来源端-目标端」的字段对应关系。如下图所示:
数据映射一些设置的介绍和注意事项如下:
配置项 | 说明 |
---|---|
映射方式 | 选择源表字段跟目标表字段的映射方式,有两种分别是「同名映射」和「同行映射」 |
建表语句 | 如果设置「数据去向」时是「自动建表」的,那么就会有这个入口,点开后可查看和复制建表语句,如果自动建表不满足要求,可粘贴到 SQL脚本 修改并建表 |
编辑映射 | 1)「字段映射」中可删除表字段、修改表字段展示顺序、修改字段类型 2)用户可自定义设置目标表字段与来源表字段之间的映射关系。如下图所示: |
重新获取 | 源表的字段、字段类型发生改变时,点击该按钮可重新获取,并初始化字段映射界面 |
主键 | 4.0.21 及之后版本,数据去向 Tab 中若选择「自动建表」,字段映射 Tab 中可设置物理主 键 注:若数据去向 Tab 中若选择「自动建表」,字段映射 Tab 中未设置主键,运行任务建表成功后,再次编辑任务,不支持修改主键 |
两种映射方式的匹配逻辑如下:
映射方式 | 匹配逻辑 |
---|---|
同名映射 | 按照目标表字段与来源表字段字符重合的情况匹配,整体逻辑为: 1)根据来源字段,在目标表中寻找同名(字符完全相同)字段对其进行匹配 2)没有同名字段时:
3)如果在目标表中找不到同名或者包含目标表字段字符的字段,则右侧映射字段显示为空 |
同行映射 | 源头字段和目标表字段按顺序匹配:同行则建立映射关系 |
使用时一些需要注意的点:
1)映射时删除了一些来源表字段,那么切换映射方式后,还是会根据剩下来的这些字段进行调整。
2)手动将映射方式从默认项「同名映射」切换到「同行映射」,点击「重新获取」字段,获取的字段将按照「同行映射」的方式自动匹配。
3)以下两种场景会出现目标表无字段可匹配源头表的情况,在这两种情况下,右侧目标表字段可展示为空:
同名映射:目标表不存在包含源头表字段的字段。
同行映射:源头表字段数量大于目标表字段数量。
4)映射时,如果右侧目标表有空字段,会出现提示图标,悬浮在其上方提示:目标表字段存在空值
5)定时任务运行后,字段映射处不支持修改目标表字段类型。
5. 写入方式编辑
写入方式界面如下图所示:
写入方式有三种:直接将数据写入目标表、清空目标表,再写入数据、基于标识字段,追加/更新/删除数据
写入方式 | 说明 |
---|---|
直接将数据写入目标表 | 目标表无物理主键且未配置逻辑主键映射:直接追加写入数据 |
目标表有物理主键或已配置逻辑主键映射:基于主键比对数据行的差异:主键相同、主键不同 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 |
简道云中的数据同步到数据库表中 | 数据同步-简道云数据 |
使用数据同步节点实现数据的增删改 | 数据同步-基于标识字段,追加/更新/删除数据 |