Universe 帮助中心

4.2.1 SQL节点

创建于 2022-11-07 / 最近更新于 2022-11-07 / 2996
字体: [默认] [大] [更大]

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

      • 避免将中间数据落地,将数据处理的过程提交给数据库执行,会带来明显的性能提升

43 人点赞过