查询SQL获取max值传递给CDM作业
场景描述
通过查询SQL语句,将获取到的最大时间的max值传递给CDM作业。在CDM作业的高级属性里面,通过where子句判断最大时间范围,获取所需要的迁移数据,从而完成数据迁移任务,最终完成增量迁移任务。
使用案例
创建SQL脚本
- 在数据开发主界面的左侧导航栏,选择 。
- 创建一个SQL脚本。本案例以MRS SPARK SQL为例。
- 选择已创建好的数据连接和数据库。
- 编写SQL脚本,从源表table1这张数据表里面获取最大时间值数据。
select max(time) from table1
- 保存并提交版本。脚本maxtime创建完成。
创建一个Pipeline子作业
- 在数据开发主界面的左侧导航栏,选择 。
- 选择CDM Job节点,并配置节点属性参数。
图1 配置CDM Job节点属性参数
选择CDM集群名称、关联已存在的CDM作业。
配置该作业的参数,引入作业参数名称maxtime,如下图所示。
图2 配置作业参数 - 保存并提交版本。子作业sub创建完成。
创建一个Pipeline作业
- 在数据开发主界面的左侧导航栏,选择 。
- 选择MRS Spark SQL节点和For Each循环执行的节点,让CDM子作业循环执行,并配置节点属性参数。
- 配置MRS Spark SQL节点的属性参数,并关联已创建的脚本maxtime。
图3 配置MRS Spark SQL节点属性参数
- 配置For Each节点的属性参数,并关联已创建的CDM子作业。
图4 配置For Each节点参数
关联已创建的子作业sub后,编写参数表达式。
#{Loop.current[0]}
配置数据集,支持EL表达式和简易变量集。
#{Job.getNodeOutput("maxtime")}
- 保存并提交版本。作业创建完成。
在CDM作业中通过where子句配置获取最大时间值数据并传递给目的端作业
- 打开已创建的子作业。
- 单击CDM作业名称后面的
跳转到CDM作业配置界面。
图5 编辑CDM作业 - 在源端作业配置的高级属性里面,通过配置where子句获取迁移所需的数据,作业运行时,将从源端获取到的迁移数据复制导出并导入目的端。
图6 配置where子句
where子句配置如下:
dt > '${maxtime}'