补数据场景使用介绍
适用场景
在某项目搬迁场景下,当您需要补充以前时间段内的历史业务数据,需要查看历史数据的详细信息时,可以使用补数据特性。
补数据是指作业执行一个调度任务,在过去某一段时间里生成一系列的实例。用户可以通过补数据,修正历史中出现数据错误的作业实例,或者构建更多的作业记录以便调试程序等。
- 补数据作业除了支持SQL脚本,其他节点也支持。
- 如果SQL脚本的内容有变化,补数据作业运行的是最新版本的脚本。
- 使用补数据功能时,如SQL中变量是DATE,脚本中就写${DATE},在作业参数中会自动增加脚本参数DATE,脚本参数DATE的值支持使用EL表达式。如果是变量时间的话,需要使用DateUtil内嵌对象的表达式,平台会自动转换成历史日期。EL表达式用法可参考EL表达式。
- 补数据作业除了支持作业参数,脚本参数或者全局环境变量也支持。
约束条件
只有数据开发作业配置了周期调度,才支持使用补数据功能。
使用案例
案例场景
在某企业的产品数据表中,有一个记录产品销售额的源数据表A,现在需要把产品销售额的历史数据导入的目的表B里面,需要您配置补数据作业的相关操作。
配置方法
- 准备源表和目的表。为了便于后续作业运行验证,需要先创建DWS源数据表和目的表,并给源数据表插入数据。
- 创建DWS表。您可以在DataArts Studio数据开发中,新建DWS SQL脚本执行以下SQL命令:
/* 创建数据表 */ CREATE TABLE A (PRODUCT_ID INT, SALES INT, DATE DATE); CREATE TABLE B (PRODUCT_ID INT, SALES INT, DATE DATE);
- 给源数据表插入示例数据。您可以在DataArts Studio数据开发模块中,新建DWS SQL脚本执行以下SQL命令:
/* 源数据表插入示例历史数据 */ INSERT INTO A VALUES ('1','60', '2022-03-01'); INSERT INTO A VALUES ('2','80', '2022-03-01'); INSERT INTO A VALUES ('1','50', '2022-02-28'); INSERT INTO A VALUES ('2','55', '2022-02-28'); INSERT INTO A VALUES ('1','60', '2022-02-27'); INSERT INTO A VALUES ('2','45', '2022-02-27');
- 创建DWS表。您可以在DataArts Studio数据开发中,新建DWS SQL脚本执行以下SQL命令:
- 开发一个补数据的脚本。开发脚本时,脚本表达式里面必须包含时间变量(例如,SQL中变量是DATE,脚本中就写${DATE})。在作业参数配置里面,您可以在3中编写脚本参数DATE的语句表达式。
在“脚本开发”界面,在编辑器中输入开发语句。
INSERT INTO B (SELECT * FROM A WHERE DATE = ${DATE})
图1 开发脚本
脚本编写完成后,保存并提交此脚本的最新版本。
- 开发一个补数据的批处理作业。开发作业时,您需要配置节点属性参数和调度周期。
图2 节点参数
- 如果作业所关联的SQL脚本使用了参数,此处显示脚本参数名称(例如DATE),请在参数名称后的输入框配置参数值。参数值支持使用EL表达式,EL表达式用法可参考EL表达式。
如果参数是时间的话,请您查看下DateUtil内嵌对象的表达式例子,平台会自动替换成补数据的历史日期(由补数据的业务日期所决定)。
您也可以直接编写SQL语句,编写SQL表达式。
- 若关联的SQL脚本,脚本参数发生变化,可单击刷新按钮同步,也可以单击进行编辑。
- 脚本参数的举例如下所示。
配置补数据作业的调度周期。单击界面右侧的调度配置,配置补数据作业的调度周期,该使用指导配置周期设置为天。
图3 配置调度周期
参数配置完成后,保存并提交此作业的最新版本,测试运行该作业。
单击“执行调度”,让该作业运行起来。
- 如果作业所关联的SQL脚本使用了参数,此处显示脚本参数名称(例如DATE),请在参数名称后的输入框配置参数值。参数值支持使用EL表达式,EL表达式用法可参考EL表达式。
- 创建补数据。
您在创建了一个周期调度作业后,用户需要为该任务进行补数据的操作。
- 在数据开发主界面的左侧导航栏,选择 。
- 单击“批作业监控”页签,进入批作业的监控页面。在该作业的“操作”列,选择 。进入“补数据”页面。
如果您需要补充2023-02-27至2023-03-01之间的历史数据,补数据的业务日期需要设置为2023-02-28至2023-03-02,该业务日期系统会自动传给作业计划时间,脚本时间变量DATE的表达式中,定义的时间为作业计划时间减去一天,即作业计划时间的前一天时间为补数据的时间范围(2023-02-27至2023-03-01)。图4 补数据
表2 参数说明 参数
说明
补数据名称
系统自动生成一个补数据的任务名称,允许修改。
作业名称
系统自动显示需要补数据的作业名称。
业务日期
选择需要补数据的时间段。这个业务日期会传递给作业的计划时间。作业运行时,作业计划时间就会被补数据里面的业务时间替换掉。
说明:一个作业可进行多次补数据。但多次补数据的业务日期需要避免交叉重叠,否则可能导致数据重复或混乱,用户请谨慎操作。
如果勾选了“按日期倒序补数据”,则系统按照日期倒序补跑,每日内的补数顺序仍是正序。
说明:- 该功能适合在各日数据不耦合的条件下使用。
- 为保证补数可以倒序进行,补数据作业对更早日期作业实例的依赖关系将被忽略。
并行周期数
设置同时执行的实例数量,最多可同时执行5个实例。
说明:请根据实际情况配置并行周期数,例如CDM作业实例,不可同时执行补数据操作,并行周期数只可设置为1。
需要补数据的上下游作业
可选。选择需要补数据的下游作业(指依赖于当前作业的作业),支持多选。
- 单击“确定”,系统会根据作业的调度周期开始补数据。
- 在“补数据监控”页面中,查看补数据的任务状态、业务日期、并行周期数、补数据作业名称,以及停止运行中的任务,同时您可以查看补数据的详细日志信息。
图5 补数据详细信息
- 执行以下SQL命令,查询目的表B里面是否存在源表A的历史数据。
SELECT * FROM B