本文介绍如何通过DMS数仓开发在AnalyticDB for PostgreSQL实例上做周期性数据分析。
前提条件
已开通DMS服务。
已创建AnalyticDB for PostgreSQL实例,详情请参见创建AnalyticDB for PostgreSQL实例。
已创建AnalyticDB for PostgreSQL实例的初始账号,详情请参见创建初始账号。
背景信息
云原生数据仓库AnalyticDB PostgreSQL版(原HybridDB for PostgreSQL)是阿里云上一款流行的实时数据仓库产品,提供简单、快速、经济高效的PB级云端数据仓库解决方案。
录入实例并创建数据库和Schema
将AnalyticDB for PostgreSQL实例录入到DMS中,详情请参见云数据库录入。
说明管控模式请选择安全协同,安全规则请选择adb-pg-default。
在DMS左侧的实例列表中,右键录入的AnalyticDB for PostgreSQL实例,从弹出的列表中选择数据库管理。
创建数据库。
本文以创建名称为dms_adbpg_demo_db的数据为例。
单击创建库。
配置数据库名、字符集(CHARACTER SET)与校验规则(COLLATE)。
说明若实例的管控模式为安全协同,您需要先配置“允许执行CREATE DATABASE命令”的安全规则,更多信息,请参见SQL变更。
单击确认。
在DMS左侧的实例列表上方单击
,在实例列表的AnalyticDB for PostgreSQL实例中,即可查看到已创建的数据库。
创建Schema。
单击dms_adbpg_demo_db数据库,双击名为public的默认Schema。
在弹出的SQL窗口中,输入如下命令并单击执行,创建名为dms_adbpg_demo_schema和dms_test的Schema。
CREATE SCHEMA dms_adbpg_demo_schema; CREATE SCHEMA dms_test;
申请权限
在DMS中,给当前登录用户申请AnalyticDB for PostgreSQL实例的相关权限后。
- 登录数据管理DMS 5.0。
为当前登录用户申请dms_adbpg_demo_schema和dms_test的库-权限以及库-OWNER,详情请参见通过工单申请资产权限。
说明申请库-权限时,权限类型需要勾选查询,导出和变更。
数仓开发
创建项目空间
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
说明若您使用的是极简模式的控制台,请单击控制台左上角的
图标,选择 。
单击新建项目空间。
在新建项目空间对话框中,配置如下参数信息:
类别
配置项
说明
基本信息
项目空间
输入具有业务意义的项目空间名称,便于后续识别。
说明可根据OLAP需求、数仓数据、业务场景建立项目空间。本文以dms_adbpg_demo_dw为例。
模式
选择标准模式。
说明系统默认模式,测试环境和线上环境隔离,在测试库上开发、调试,然后发布到线上库调度。
描述
输入对项目空间的详细描述,便于后续识别。
数仓引擎
数仓引擎
选择测试库和线上库的数据库类型为AnalyticDB for PostgreSQL。
测试库
搜索dms_test并选择测试库。
线上库
搜索dms_adbpg_demo_schema并选择线上库。
高级配置
试运行免安全规则检查
支持开启和关闭操作,默认开启。开启时,任务流试运行和测试库表结构变更前不需要通过安全规则检查,直接允许执行。
运维免审批
支持开启和关闭操作,默认开启。开启时,任务流和表结构变更发布不经过审批流程,直接发布到线上库。
单击确认。
您创建的项目空间,显示在项目空间区域的项目空间列表中。
创建任务流
在项目空间区域,单击目标项目空间名称dms_adbpg_demo_dw。
在项目空间的左侧导航栏中,右键单击默认业务场景,选择新增任务流。
说明您可以右键单击默认业务场景,根据业务需要对其重命名。
您也可以单击左侧导航栏中的
,选择业务场景,新建业务场景,并在新建的业务场景中创建任务流。
在新建任务流对话框中,输入任务流名称(本文以dw_task为例)和描述。
单击确认。
创建数仓表
在项目空间的左侧导航栏中,单击任务流dw_task前的
图标,展开任务流的下级目录。
右键单击表,选择新建表。
在新建表区域,根据界面提示,分别新建数仓表demo1和demo2。
说明新建表时,测试库和线上库都需要处于登录状态。
demo1和demo2的表结构如下所示。
--create tables demo1 and demo2 create table demo1 ( id integer, v integer ); create table demo2 ( id integer, v integer );
创建单实例SQL任务
在项目空间的左侧导航栏中,双击任务流dw_task,进入任务流详情页面。
在画布左侧任务类型列表中,拖拽两个单实例SQL任务节点到画布空白区域。
配置准备数据任务。
单击一个单实例SQL任务节点并选择
,将任务名称为Preparation。
双击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);
单击试运行,测试任务的正确性。
如果执行日志的最后一行出现
status SUCCEEDED
,表明任务试运行成功。如果执行日志的最后一行出现
status FAILED
,表明任务试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
配置数据聚合任务。
单击另一个单实例SQL任务节点并选择
,将任务名称为Aggregation。
双击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;
单击试运行,测试任务的正确性。
如果执行日志的最后一行出现
status SUCCEEDED
,表明任务试运行成功。如果执行日志的最后一行出现
status FAILED
,表明任务试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
返回任务流dw_task的详情页面,将两个任务连接起来。
说明您可以通过画布工具栏的自动布局工具
,优化任务流布局。
单击试运行,测试任务流的正确性。
如果执行日志的最后一行出现
status SUCCEEDED
,表明任务试运行成功。如果执行日志的最后一行出现
status FAILED
,表明任务试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
在任务流画布的下方,单击任务流信息。
在任务流信息页签的调度配置区域,打开开启调度开关,配置调度周期。
表 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表达式
不需要手动配置,系统会根据您配置的周期、具体时间自动展现。
发布任务流。具体操作,请参见发布或下线任务流。
查看任务流的执行状态
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
说明若您使用的是极简模式的控制台,请单击控制台左上角的
图标,选择 。
在项目空间区域,单击目标项目空间名称dms_adbpg_demo_dw。
在项目空间的左侧导航栏中,双击任务流名称dw_task,进入任务流详情页面。
单击画布右上方前往运维,在任务流运维页面查看。
在任务流运维页面上方,查看任务流的创建时间、修改时间、调度配置情况、是否发布状态等基本信息。
单击运行记录页签,选择调度触发或手动触发,查看任务流运行记录。
说明调度触发:通过调度或指定时间的方式运行任务流。
手动触发:通过手动单击试运行的方式运行任务流。
单击状态列前的
,查看任务流运行日志。
在操作列中,单击执行历史,查看任务流的操作时间、操作人员和操作内容。
在操作列中,对不同执行状态的任务流进行终止、重跑、暂停、恢复和置成功的操作。
说明对于执行成功的任务流,可以进行重跑操作。
对于执行失败的任务流,可以将该任务流运行记录的状态置为成功。
对于执行中的任务流,可以终止或暂停任务流运行。
单击发布列表页签,查看任务流的版本ID,发布人,发布时间、版本详情和DAG图。
您还可以选中任意2个版本ID,单击版本对比,查看版本的对比信息。
总结
数仓开发如何在AnalyticDB for PostgreSQL上做周期性数据分析具有如下优势:
数仓任务流只需一次定义,即可周期性地自动被调度执行,大大减少人工操作的成本
周期执行数仓任务并提前产生出分析结果,业务应用可直接查询结果获得快速响应
可灵活选择分析数仓任务的执行时间,避开AnalyticDB for PostgreSQL负载高峰期,合理利用AnalyticDB for PostgreSQL上的计算资源
任务流执行时产生的中间结果可被复用,用于其他的数据分析任务,从而最大化AnalyticDB for PostgreSQL的资源利用。