更新时间:2024-04-03 GMT+08:00

查询SQL获取max值传递给CDM作业

场景描述

通过查询SQL语句,将获取到的最大时间的max值传递给CDM作业。在CDM作业的高级属性里面,通过where子句判断最大时间范围,获取所需要的迁移数据,从而完成数据迁移任务,最终完成增量迁移任务。

约束条件

  1. 已完成新建数据连接的操作。
  2. 已完成新建数据库的操作。

使用案例

创建SQL脚本

  1. 在数据开发主界面的左侧导航栏,选择数据开发 > 脚本开发
  2. 创建一个SQL脚本。本案例以MRS SPARK SQL为例。
  3. 选择已创建好的数据连接和数据库。
  4. 编写SQL脚本,从源表table1这张数据表里面获取最大时间值数据。
    select max(time) from table1
  5. 保存并提交版本。脚本maxtime创建完成。

创建一个Pipeline子作业

  1. 在数据开发主界面的左侧导航栏,选择数据开发 > 作业开发
  2. 选择CDM Job节点,并配置节点属性参数。
    图1 配置CDM Job节点属性参数

    选择CDM集群名称、关联已存在的CDM作业。

    配置该作业的参数,引入作业参数名称maxtime,如下图所示。

    图2 配置作业参数

  3. 保存并提交版本。子作业sub创建完成。

创建一个Pipeline作业

  1. 在数据开发主界面的左侧导航栏,选择数据开发 > 作业开发
  2. 选择MRS Spark SQL节点和For Each循环执行的节点,让CDM子作业循环执行,并配置节点属性参数。
  3. 配置MRS Spark SQL节点的属性参数,并关联已创建的脚本maxtime。
    图3 配置MRS Spark SQL节点属性参数

  4. 配置For Each节点的属性参数,并关联已创建的CDM子作业。
    图4 配置For Each节点参数

    关联已创建的子作业sub后,编写参数表达式。

    #{Loop.current[0]}

    配置数据集,支持EL表达式。

    #{Job.getNodeOutput("maxtime")}
  5. 保存并提交版本。作业创建完成。

在CDM作业中通过where子句配置获取最大时间值数据并传递给目的端作业

  1. 打开已创建的子作业。
  2. 单击CDM作业名称后面的跳转到CDM作业配置界面。
    图5 编辑CDM作业

  3. 在源端作业配置的高级属性里面,通过配置where子句获取迁移所需的数据,作业运行时,将从源端获取到的迁移数据复制导出并导入目的端。
    图6 配置where子句

    where子句配置如下:

    dt > '${maxtime}'