本文介绍如何通过DMS数仓开发在AnalyticDB PostgreSQL版实例上做周期性数据分析。

前提条件

背景信息

云原生数据仓库AnalyticDB PostgreSQL版(原HybridDB for PostgreSQL)是阿里云上一款流行的实时数据仓库产品,提供简单、快速、经济高效的PB级云端数据仓库解决方案。

录入实例并创建数据库和Schema

  1. 将AnalyticDB PostgreSQL版实例录入到DMS中,详情请参见云数据库录入
    说明 管控模式请选择安全协同安全规则请选择adb-pg-default
  2. 在DMS左侧的实例列表中,右键录入的AnalyticDB PostgreSQL版实例,从弹出的列表中选择数据库管理
  3. 创建数据库。

    本文以创建名称为dms_adbpg_demo_db的数据为例。

    1. 单击创建库
    2. 配置数据库名字符集(CHARACTER SET)与校验规则(COLLATE)。
      说明 若实例的管控模式为安全协同,您需要先配置“允许执行CREATE DATABASE命令”的安全规则,更多信息,请参见SQL变更
    3. 单击确认
    4. 在DMS左侧的实例列表上方单击刷新,在实例列表的AnalyticDB PostgreSQL版实例中,即可查看到已创建的数据库。
  4. 创建Schema。
    1. 单击dms_adbpg_demo_db数据库,双击名为public的默认Schema。
    2. 在弹出的SQL窗口中,输入如下命令并单击执行,创建名为dms_adbpg_demo_schemadms_test的Schema。
      CREATE SCHEMA dms_adbpg_demo_schema;
      CREATE SCHEMA dms_test;

申请权限

在DMS中,给当前登录用户申请AnalyticDB PostgreSQL版实例的相关权限后。

  1. 登录数据管理DMS 5.0
  2. 为当前登录用户申请dms_adbpg_demo_schemadms_test库-权限以及库-OWNER,详情请参见通过工单申请权限
    说明 申请库-权限时,权限类型需要勾选查询导出变更

数仓开发

创建项目空间

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择集成与开发(DTS) > 数据开发 > 数仓开发
  3. 单击新建项目空间
  4. 新建项目空间对话框中,配置如下参数信息:
    类别 配置项 说明
    基本信息 项目空间 输入具有业务意义的项目空间名称,便于后续识别。
    说明 可根据OLAP需求、数仓数据、业务场景建立项目空间。本文以dms_adbpg_demo_dw为例。
    模式 选择标准模式
    说明 系统默认模式,测试环境和线上环境隔离,在测试库上开发、调试,然后发布到线上库调度。
    描述 输入对项目空间的详细描述,便于后续识别。
    数仓引擎 数仓引擎 选择测试库和线上库的数据库类型为AnalyticDB for PostgreSQL
    测试库 搜索dms_test并选择测试库。
    线上库 搜索dms_adbpg_demo_schema并选择线上库。
    高级配置 试运行免安全规则检查 支持开启和关闭操作,默认开启。开启时,任务流试运行和测试库表结构变更前不需要通过安全规则检查,直接允许执行。
    运维免审批 支持开启和关闭操作,默认开启。开启时,任务流和表结构变更发布不经过审批流程,直接发布到线上库。
  5. 单击确认
    您创建的项目空间,显示在项目空间区域的项目空间列表中。

创建任务流

  1. 项目空间区域,单击目标项目空间名称dms_adbpg_demo_dw
  2. 在项目空间的左侧导航栏中,右键单击默认业务场景,选择新增任务流
    说明
    • 您可以右键单击默认业务场景,根据业务需要对其重命名。
    • 您也可以单击左侧导航栏中的jai,选择业务场景,新建业务场景,并在新建的业务场景中创建任务流。
  3. 新建任务流对话框中,输入任务流名称(本文以dw_task为例)和描述。
  4. 单击确认

创建数仓表

  1. 在项目空间的左侧导航栏中,单击任务流dw_task前的5展开2图标,展开任务流的下级目录。
  2. 右键单击,选择新建表
  3. 新建表区域,根据界面提示,分别新建数仓表demo1demo2
    说明 新建表时,测试库和线上库都需要处于登录状态。

    demo1demo2的表结构如下所示。

    --create tables demo1 and demo2
    create table demo1
    (
      id integer,
      v integer
    );
    create table demo2
    (  
      id integer,
      v integer
    );

创建单实例SQL任务

  1. 在项目空间的左侧导航栏中,双击任务流dw_task,进入任务流详情页面。
  2. 在画布左侧任务类型列表中,拖拽两个单实例SQL任务节点到画布空白区域。
  3. 配置准备数据任务。
    1. 单击一个单实例SQL任务节点并选择重命名,将任务名称为Preparation
    2. 双击Preparation任务节点,在SQL区域,输入如下SQL语句:
      --insert data into demo1
      insert into demo1 values(1, 1);
      insert into demo1 values(1, 19);
      insert into demo1 values(2, 12);
      insert into demo1 values(3, 2);
      insert into demo1 values(3, 4);
      insert into demo1 values(4, 67);
    3. 单击试运行,测试任务的正确性。
      • 如果执行日志的最后一行出现status SUCCEEDED,表明任务试运行成功。
      • 如果执行日志的最后一行出现status FAILED,表明任务试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
  4. 配置数据聚合任务。
    1. 单击另一个单实例SQL任务节点并选择重命名,将任务名称为Aggregation
    2. 双击Aggregation任务节点,在SQL区域,输入如下SQL语句:
      ---run aggregation operation against demo1 and insert results into demo2
      insert into demo2
      select id, sum(v) from demo1 group by id;
    3. 单击试运行,测试任务的正确性。
      • 如果执行日志的最后一行出现status SUCCEEDED,表明任务试运行成功。
      • 如果执行日志的最后一行出现status FAILED,表明任务试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
  5. 返回任务流dw_task的详情页面,将两个任务连接起来。
    说明 您可以通过画布工具栏的自动布局工具自动布局,优化任务流布局。
    任务流
  6. 单击试运行,测试任务流的正确性。
    • 如果执行日志的最后一行出现status SUCCEEDED,表明任务试运行成功。
    • 如果执行日志的最后一行出现status FAILED,表明任务试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
  7. 在任务流画布的下方,单击任务流信息
  8. 任务流信息页签的调度配置区域,打开开启调度开关,配置调度周期。
    表 1. 调度周期配置表
    配置项 说明
    调度类型 选择调度类型:
    • 周期调度:周期性调度任务,例如一周执行一次任务。
    • 调度一次:在指定时间执行一次任务,仅需要配置执行任务的具体时间。
    生效时间 选择调度周期生效的区间,默认1970-01-01~9999-01-01,表示一直生效。
    调度周期 选择调度任务的周期:
    • 小时:按设定的小时执行任务调度,需要配置定时调度。
    • :按每日一次的频率执行任务调度,需要配置每日调度的具体时间。
    • :以周为周期,每个指定天执行一次任务调度,需要配置指定时间和具体时间。
    • :以月为周期,每个指定天执行一次任务调度,需要配置指定时间和具体时间。
    定时调度 提供了2种定时调度的方式:
    • 固定间隔时间调度:
      • 开始时间:执行任务的开始时间。
      • 间隔时间:执行任务的间隔时间,单位为小时。
      • 结束时间:执行任务的结束时间。
      例如,配置开始时间为00:00、间隔时间为6小时、结束时间为20:59,系统将在0点、6点、12点、18点执行任务。
    • 指定时间调度:选择执行任务的目标时间点。

      例如选择和0小时和5小时,系统将在0点和5点执行任务。

    指定时间
    • 如果调度周期为周,选择星期几执行任务,支持多选。
    • 如果调度周期为月,选择每月几号执行任务,支持多选。
    具体时间 设置执行任务流的具体时间。

    例如配置02:55,系统将在指定天的02时55分执行任务。

    cron表达式 不需要手动配置,系统会根据您配置的周期、具体时间自动展现。
  9. 发布任务流。具体操作,请参见发布任务流

查看任务流的执行状态

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择集成与开发(DTS) > 数据开发 > 数仓开发
  3. 项目空间区域,单击目标项目空间名称dms_adbpg_demo_dw
  4. 在项目空间的左侧导航栏中,双击任务流名称dw_task,进入任务流详情页面。
  5. 单击画布右上方前往运维,在任务流运维页面查看。
    • 在任务流运维页面上方,查看任务流的创建时间修改时间调度配置情况、是否发布状态等基本信息。
    • 单击运行记录页签,选择调度触发手动触发,查看任务流运行记录。
      说明
      • 调度触发:通过调度或指定时间的方式运行任务流。
      • 手动触发:通过手动单击试运行的方式运行任务流。
      • 单击状态列前的加,查看任务流运行日志。
      • 操作列中,单击执行历史,查看任务流的操作时间操作人员操作内容
      • 操作列中,对不同执行状态的任务流进行终止重跑暂停恢复置成功的操作。
        说明
        • 对于执行成功的任务流,可以进行重跑操作。
        • 对于执行失败的任务流,可以将该任务流运行记录的状态置为成功。
        • 对于执行中的任务流,可以终止或暂停任务流运行。
    • 单击发布列表页签,查看任务流的版本ID发布人发布时间、版本详情DAG图

      您还可以选中任意2个版本ID,单击版本对比,查看版本的对比信息。

总结

数仓开发如何在AnalyticDB PostgreSQL版上做周期性数据分析具有如下优势:
  • 数仓任务流只需一次定义,即可周期性地自动被调度执行,大大减少人工操作的成本
  • 周期执行数仓任务并提前产生出分析结果,业务应用可直接查询结果获得快速响应
  • 可灵活选择分析数仓任务的执行时间,避开AnalyticDB PostgreSQL版负载高峰期,合理利用AnalyticDB PostgreSQL版上的计算资源
  • 任务流执行时产生的中间结果可被复用,用于其他的数据分析任务,从而最大化AnalyticDB PostgreSQL版的资源利用。