4.2.1 SQL节点
SQL任务节点可通过SQL语句进行基本的数据开发,包括获取数据、处理数据、插入数据、非查询。
获取数据:
数据连接:可选择配置好的数据库连接
sql语句:通过sql语句从外部数据库获取数据
节点参数:节点参数可以在sql语句中通过${参数名}的方式进行调用
前置/后置sql:在主sql语句的基础上支持数据准备/善后操作
输出:sql语句获取到的数据将作为该任务节点的输出数据,允许对输出进行命名
数据打印到日志:支持将任务的输出数据打印到任务实例的日志中去(最多100行)
特殊配置:MongoDB
支持选择源表并进行数据预览;
支持对于源表的解析进行“列设置”:
如果不进行“列设置”:会默认根据源表内的前100行数据生成schema,并根据该schema进行源表预览/获取数据任务运行;
如果进行“列设置”:会根据人工设置的schema,进行源表预览/获取数据任务运行。
处理数据
输入:可选择当前工作流中任何任务节点的输出数据作为输入(允许添加多个输入)
sql语句:通过sql语句对输入数据进行处理
输入:输入数据可以在sql语句中通过input1、input2的方式进行调用
节点参数:节点参数可以在sql语句中通过${参数名}的方式进行调用
输出:sql语句处理后的数据将作为该任务节点的输出数据,允许对输出进行命名
数据打印到日志:支持将任务的输出数据打印到任务实例的日志中去(最多100行)
插入数据
插入数据:将输入的数据insert到外部数据库的“目标表”中去
输入:可选择当前工作流中任何任务节点的输出数据作为输入
数据连接:可选择配置好的数据库连接
目标表:可选择数据连接中的数据表,将“输入”数据insert到“目标表”中去
前置/后置sql:在主操作的基础上支持数据准备/善后操作
多线程插入:如果插入的数据量过大,启用“多线程插入”可以提升插入数据的性能
设置批量插入数据量:启用后支持自定义批量插入数据行数(上限10000)
插入更新数据:将输入的数据根据添加的“去重主键”upsert到外部数据库的“目标表”中去
输入:可选择当前工作流中任何任务节点的输出数据作为输入
数据连接:可选择配置好的数据库连接
目标表:可选择数据连接中的数据表,将“输入”数据根据添加的“去重主键”upsert到“目标表”中去
去重主键:可选择目标表中的字段作为去重主键,根据去重主键将源表和目标表的数据进行比对,对于目标表中存在的数据进行更新操作,目标表中不存在的数据进行插入操作
前置/后置sql:在主操作的基础上支持数据准备/善后操作
关于增量更新:建议采用以下方式实现增量更新
先删后插方式:前置sql中提前删除指定时间范围/指定id范围内的数据,随后再进行insert插入操作
插入更新方式:插入更新数据环节,根据设置的“去重主键”将源表和目标表的数据进行比对,对于目标表中存在的数据进行更新操作,目标表中不存在的数据进行插入操作。
向外部数据库插入数据时,支持设置字段映射:
源表与目标表的字段默认根据名称进行自动匹配映射,同时支持手工设置映射关系;
以目标表字段为基准,支持选择对应的源表字段;目标表中如果有字段不进行来源映射,那么该字段将不进行插入操作;
脏数据检测:通过工作流/数据流向外部数据库插入数据时,支持开启脏数据检测;
启用后会对插入异常的数据进行收集,并在实例日志中显示具体的脏数据内容(最多显示30条),为用户提供信息进行数据异常原因的分析。(目前暂不支持以下类型数据连接:PostgreSQL、Hive、Impala)
删除数据
输入:可选择当前工作流中任何任务节点的输出数据作为输入
数据连接:可选择配置好的数据库连接
目标表:可选择数据连接中的数据表,将根据主键字段将“输入”数据与“目标表”进行比对并进行删除打标
主键:可选择目标表中的字段作为主键,根据主键将“输入”和“目标表”的数据进行比对,对于“输入”中不存在但“目标表”中存在的数据进行删除达标
字段标记:从目标表的字段中进行单选,如果需要对某条记录进行“删除”操作,那么将该记录的“标记字段”设置为“标记内容”(eg:isDeleted--"Y")
仅标记最新一条记录:启用后将标记最新一条符合规则的记录(需要选择一个字段进行降序排序);否则将标记所有符合规则的记录
非查询:
输入:可选择当前工作流中任何任务节点的输出数据作为输入
数据连接:可选择配置好的数据库连接
sql语句:通过sql语句对外部数据库进行操作
节点参数:节点参数可以在sql语句中通过${参数名}的方式进行调用
前置/后置sql:在主sql语句的基础上支持数据准备/善后操作
建议通过“SQL-非查询”节点实现对于相同数据库内部的数据同步
sql语句举例:insert into xxx select * from xxx
避免将中间数据落地,将数据处理的过程提交给数据库执行,会带来明显的性能提升