调度参数可以用于数据集成任务配置的各个阶段。本文为您介绍调度参数的典型应用场景。
背景信息
DataWorks数据集成结合调度参数使用,可实现以下场景:
场景 | 说明 | 相关文档 |
增量数据同步 | 部分Reader插件可通过调度参数实现每次调度只同步指定时间范围内的数据至目标端。同时,您可以结合补数据功能,实现将对应时间内的数据同步至目标端对应分区的功能。例如MySQL、Loghub、Kafka等。 | |
动态表名或文件路径 | 表名或文件名使用调度参数,可实现每次同步不同表的目的。例如OSS、FTP,MySQL等插件。部分插件可能需要转脚本配置。 | |
在同步时为目标表某字段赋值常量或时间变量 | 字段映射时您可以手动编辑字段并结合调度参数使用,为目标表某字段赋值同步业务日期的常量值。具体插件是否支持该操作请以各插件的支持情况为准。 |
注意事项
在DataStudio界面单击运行
或高级运行
时,仅支持手动为离线同步任务配置的变量赋值常量,由于数据集成无法直接使用开发环境冒烟测试功能,建议您通过以下方式验证调度参数在调度场景下的替换情况。
SQL类型节点通过冒烟测试验证参数符合预期后,再将参数移入数据集成任务使用。SQL类型节点调度参数测试,详情请参见:配置并使用调度参数。
将离线同步节点提交至开发环境运维中心执行。
场景一:同步增量数据
数据集成任务配置过程中,支持在数据过滤相关参数中使用调度参数,实现增量同步,同时您需要配置满足数据库的语法。增量同步详情请参见:场景:配置增量数据离线同步任务。
示例1:将LogHub每十分钟内的增量数据同步至MaxCompute T-1分区。
平台将根据定时时间,每十分钟生成一个调度实例,目标MaxCompute表分区名称也以调度参数的方式指定,$bizdate表示业务日期,定时任务执行时,任务配置的分区表达式会替换为调度参数所表达的业务日期。调度参数表达式的详细配置说明请参考文档:配置并使用调度参数。
说明开始时间与结束时间为左闭右开区间。
任务配置要点:数据来源选择LogHub,日志开始时间填写
${startTime},日志结束时间填写${endTime};数据去向选择MaxCompute(ODPS),分区信息填写pt = ${bizdate},写入模式选择写入前清理已有数据 (Insert Overwrite)。调度配置中定义以下参数:bizdate=$bizdatestartTime=${yyyymmddh24miss-10/24/60}endTime=${yyyymmddh24miss}
调度周期选择日,定时调度时间设为00:05。
示例2:每天0点将LogHub昨天的数据写入MaxCompute T-1分区。
说明开始时间与结束时间为左闭右开区间。
在数据集成离线同步任务中,按以下要求完成调度参数与数据源的关联配置:
在右侧调度配置面板顶部添加三个调度参数:
startTime=${yyyymmdd}、endTime=${yyyymmdd}、bizdate=${yyyymmdd}。数据来源(Logstore):日志开始时间填写
${startTime}000000,日志结束时间填写${endTime}000000,批量条数设为256。数据去向(MaxCompute):分区信息填写
pt=${bizdate},清理规则选择写入前清理已有数据(Insert Overwrite)。调度配置:调度周期选择日,定时调度时间设为
00:00,对应 cron 表达式00 00 00 * * ?,实例生成方式选择T+1次日生成。
场景二:同步动态表名或文件名中的数据
调度参数可以为数据集成任务配置中定义的变量赋值。
示例1:动态文件名。
每日将OSS指定目录下文件名为时间日期结尾的文件同步至MaxCompute对应分区中。
说明如果要实现同步动态表名或文件名中的数据,部分插件需要转脚本模式进行配置。同时,在使用变量的情况下,一般不支持数据预览功能。
在数据同步任务的选择数据源步骤中,按如下方式配置:
数据来源:选择 OSS 数据源,文本类型为 CSV,文件路径设置为
/xx/user_log_${var1}.txt,列分隔符为逗号,编码 UTF-8。其中${var1}为调度参数,用于动态匹配文件名中的日期。数据去向:选择 MaxCompute(ODPS) 数据源,目标表为
ods_raw_log_d,分区信息设置为dt=${var1},写入模式选择写入前清理已有数据(Insert Overwrite),空字符串转为 Null 写入选择否。
在调度参数配置面板中,设置以下参数:
参数名
bizdate,参数值为$bizdate,来源为手动添加。参数名
var1,参数值为${yyyymmdd-1},来源为手动添加。
示例2:动态表名。
MySQL 将源端具有时间格式规律的表通过调度参数实现动态表名配置,进而实现每天将 MySQL 对应业务表写入 MaxCompute 表对应分区。如下代码所示:
{ "version": "2.0", "steps": [ { "stepType": "mysql", "parameter": { "envType": 0, "useSpecialSecret": false, "column": [ "id" ], "tableComment": "", "connection": [ { "datasource": "xc_workshop_public", "table": [ "person_${var1}" ] } ], "where": "", "splitPk": "id", "encoding": "UTF-8" }, "name": "Reader", "category": "reader" }, { "stepType": "odps", "parameter": { "partition": "ds=${var1}", "truncate": true, "datasource": "odps_first", "isSupportThreeModel": false, "column": [ "id" ] } } ] }在参数配置区域,确认调度参数配置:参数
bizdate的参数值为$bizdate(手动添加),参数var1的参数值为${yyyymmdd-1}(代码解析自动生成)。配置完成后,单击调度参数预览可预览参数替换结果。
场景三:定义目标字段
数据集成任务配置过程中,支持您为目标表某字段赋值同步业务日期的常量值。示例:
在字段映射区域,添加一行类型为常量的目标字段,值设置为${bizdate}。在右侧调度配置面板的参数区域,新增参数bizdate = $bizdate,使该调度参数在字段映射中作为常量生效。
场景四:同步历史数据
基于调度参数可根据业务时间将参数自动替换为对应的值这一特性,当您创建任务当天需要将历史数据进行补齐时,您可使用补数据功能,补数据支持补历史一段时间的数据或者未来一段时间的数据,调度参数将在任务调度时根据补数据选择的业务时间自动替换为对应的值。补数据操作请参见:补数据实例运维。
离线同步任务中,bizdate调度参数需在以下三处联动配置:
数据来源的数据过滤条件中引用
${bizdate},示例:STR_TO_DATE('${bizdate}','%Y%m%d') <= gmt_modify_time AND gmt_modify_time < DATE_ADD(STR_TO_DATE('${bizdate}','%Y%m%d'), interval 1 day)数据去向的分区信息中设置为
pt=${bizdate},清理规则选择写入前清理已有数据(Insert Overwrite)右侧调度配置面板的参数中配置
bizdate=$bizdate,时间属性中生成实例选择T+1次日生成