数据管理DMS的任务编排功能提供了强大的任务流和定时调度能力,支持可视化的编辑界面、多种消息通知机制、多种运维操作,满足数据归档、数据集成、数仓数据开发、数据挖掘等需求。

准备工作

本示例演示定期将task_data表中历史数据(本示例定义为6个月前的数据)迁移(归档)至其他表,并在task_data表中删除历史数据。本示例已提前创建task_data表,建表语句如下:
/** 创建表 **/
CREATE TABLE task_data (
    `id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
      `gmt_create` DATETIME NOT NULL COMMENT '创建时间',
      `gmt_modified` DATETIME NOT NULL COMMENT '修改时间',
    `content` TEXT COMMENT '测试数据'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务编排测试表';

/** 插入数据 **/
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-01-01 01:00:00', '2020-01-01 01:00:00', 'value1');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-02-01 01:00:00', '2020-02-01 01:00:00', 'value2');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-03-01 01:00:00', '2020-03-01 01:00:00', 'value3');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-04-01 01:00:00', '2020-04-01 01:00:00', 'value4');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-05-01 01:00:00', '2020-05-01 01:00:00', 'value5');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-06-01 01:00:00', '2020-06-01 01:00:00', 'value6');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-07-01 01:00:00', '2020-07-01 01:00:00', 'value7');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-08-01 01:00:00', '2020-08-01 01:00:00', 'value8');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-09-01 01:00:00', '2020-09-01 01:00:00', 'value9');
INSERT INTO task_data( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-10-01 01:00:00', '2020-10-01 01:00:00', 'value10');

操作步骤

  1. 登录新版DMS控制台
  2. 在页面顶部,选择全部功能 > 数据工厂 > 任务编排
  3. 任务编排页面的自由编排任务区域,单击新建任务流
  4. 新建任务流对话框,将任务流名称设置为poc_task_test,将描述设置为测试,单击确认
    即会进入任务编排页面。
  5. 单击任务流中画布的空白处,在右侧面板中单击任务流变量,配置如下变量。

    在配置完变量后,您可以在SQL任务中,用${变量名}表示时间点或时长。关于变量的规则与作用详情,请参见任务

    • 新增yearmonth6_name变量,格式为yyyy-MM,偏移为- 6月

      表示获取当前日期往前6个月份的日期(精确至月份),例如当前日期为2021-01-10,该变量的值即为2020-07。

    • 新增yearmonth6_date变量,格式为yyyy-MM-01,偏移为- 6月

      表示获取当前日期往前6个月份的第一天(精确至日期),例如当前日期为2021-01-10,该变量的值即为2020-07-01。

    创建系统变量
  6. 创建迁移数据节点。
    用于将task_data表中的历史数据迁移至其他表。
    1. 任务编排页面的左侧任务类型中,选择数据库运维 > 单实例SQL,并拖拽至页面中的空白区域。
    2. 双击页面中的目标任务节点,重命名为:迁移数据节点,按回车保存节点名。
    3. 单击目标节点,在右侧面板中单击内容设置页签。
    4. 数据库列表中,选择目标数据库,并在下方输入以下SQL语句。

      示例代码说明:创建历史数据的归档表,将符合日期要求的历史数据从源表迁移至归档表中。

      CREATE TABLE IF NOT EXISTS `task_data_${yearmonth6_name}` LIKE task_data;
      
      INSERT INTO `task_data_${yearmonth6_name}` 
      SELECT * FROM task_data 
      WHERE gmt_create < '${yearmonth6_date}';
      迁移数据节点
    5. 单击SQL预览,检验SQL的正确性。
      预览SQL
    6. 完成以上配置后,单击保存按钮。
  7. 创建清除历史数据节点。
    用于删除task_data表中的历史数据。
    1. 任务编排页面的左侧任务类型中,选择数据库运维 > 单实例SQL,并拖拽至页面中的空白区域。
    2. 双击页面中的目标任务节点,重命名为:清除历史数据节点,按回车保存节点名。
    3. 单击目标节点,在右侧面板中单击内容设置页签。
    4. 数据库列表中,选择目标数据库,并在下方输入以下SQL语句。

      示例代码说明:删除源表中的历史数据。

      DELETE FROM task_data WHERE  gmt_create < '${yearmonth6_date}';
      清除历史数据SQL
    5. 单击SQL预览,检验SQL的正确性。
    6. 完成以上配置后,单击保存按钮。
  8. 在任务流中的画布中,单击迁移数据节点上的圆点并拉出连接线,连接至清除历史数据节点
    连接多节点
    说明 通过连接线设计任务执行的先后顺序。本示例中,将先执行迁移数据节点,再执行清除历史数据节点
  9. 单击任务流中画布的空白处,在右侧面板中单击调度配置,打开开启调度按钮,参考下图完成配置,并单击保存
    说明 本示例的调度配置为每月1号凌晨01:00运行,您可以按需配置调度计划。更多信息,请参见配置调度
    开启调度
  10. 单击页面左上方的试运行按钮,立即运行脚本。

执行结果

您可以在运维中心查看任务运行结果。

运维中心
说明 运维中心页面展示了任务流每一次执行的状态(成功失败执行中)与起止时间,同时您也可以在该页面进行运维操作(暂停重跑等)。