开发者学堂课程【DataWorks 使用教程:DataWorks 基本操作演示】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/107/detail/1866
DataWorks 基本操作演示
内容简介:
一、开发流程
二、创建工作空间
三、新建 OSS 数据源
四、新建 RDS 数据源
五、创建业务流程
六、配置 workshop_start 节点
七、新建表
八、配置离线同步节点
九、提交业务流程
十、运行业务流程
十一、确认数据是否成功导入 MaxCompute
十二、配置 ODPS SQL 节点
十三、业务流程
十四、配置数据质量监控
十五、数据可视化展现
十六、通过向导模式生成 API
一、开发流程
Workshop 教程涉及的具体开发流程如下:
1. 环境准备:
准备操作过程中需要的 MaxCompute、DataWorks 等环境。详情请参见准备环境。
2. 数据采集:
学习如何从不同的数据源同步数据至 MaxCompute 中、如何快速触发任务运行、如何查看任务日志等。详情请参见采集数据。
3. 数据加工:
学习如何运行数据流程图、如何新建数据表、如何新建数据流程任务节点、如何配置任务的周期调度属性。详情请参见加工数据。
4. 数据质量监控:
学习如何给任务配置数据质量的监控规则,以保证任务运行的质量问题。详情请参见配置数据质量监控。
5. 数据可视化展现:
学习如何通 过 Quick BI 创建网站用户分析画像的仪表板,实现所需数据的可视化展现。详情请参见数据可视化展现。
6. 通过 Function Studio 开发 UDF:
学习如何通过 Function Studio 开发 UDF,并将其提交至 DataStudio 的开发环境。
二、创建工作空间
1.使用主账号登录 DataWorks 控制台。
2.在概览页面,单击右侧的快速入口>创建工作空间。
您也可以单击左侧导航栏中的工作空间列表,切换至相应的区域后,单击创建工作空间。
3.配置创建工作空间对话框中的基本配置,单击下—步。
4.进入选择引擎界面,勾选 MaxCompute 引擎后,单击下—步。
DataWorks 已正式商用,如果该区域没有开通,需要首先开通正式商用的服务。
默认选中数据集成、数据开发、运维中心和数据质量。
5.进入引擎详情页面,配置选购引擎的参数。
实例显示名称:
实例显示名称不能超过 27 个字符,仅支持字母开头,仅包含字母、数字和下划线(_)。
Quota 组切换:
Quota 用于实现计算资源和磁盘配额。
Maxcompute 数据类型:
该选项设置后,将在 5 分钟内生效。详情请参见数据类型版本说明。
Maxcompute 项目名称:
默认与 DataWorks 工作空间的名称—致。
Maxcompute 访问身份:
包括阿里云主账号和任务负责人。
6.配置完成后,单击创建工作空间。
工作空间创建成功后,即可在工作空问列表页面查看相应内容。
三、新建 OSS 数据源
1.进入数据源管理页面。
i.登录 DataWorks 控制台。
ii.在左侧导航栏,单击工作空间列表。
iii.单击相应工作空间后的进入数据集成。
如果您已在 DataWorks 的某个功能模块,请单击左上方的目图标,选择全部产品>数据汇聚>数据集成,进入数据集成页面。
iv.在左侧导航栏,单击数据源,进入工作空间管理>数据源管理页面。
2.在数据源管理页面,单击右上方的新增数据源。
3.在新增数据源对话框中,选择数据源类型为 OSS。
4.在新增OSS数据源对话框,配置各项参数。
数据源名称:输入 oss_workshop_log。
数据源描述:对数据源进行简单描述。
适用环境:勾选开发。
说明:开发环境的数据源创建完成后,需要勾选生产,以同样方式创建生产环境的数据源,否则任务生产执行会报错。
Endpoint:输入 http://loss-cn-shanghai-internal.aliyuncs.com .
Bucket:输入 new-dataworks-workshop.
AccessKey ID:输入 LTAl4FvGT3iU4xjKotpUMAjs.
AccessKey Secret:输入 9RSUoRmNxpRC9EhC4m9PjuG7Jzy7px.
5.在资源组列表,单击相应资源组后的测试连通性。
数据同步时,一个任务只能使用—种资源组。您需要测试每种资源组的连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。
如果您需要同时测试多种资源组,请选中相应资源组后,单击批量测试连通性。详情请参见选择网络连通方案。
1. 连通性测试通过后,单击完成。
四、新建 RDS 数据源
1.单击当前页面左上角图标,选择全部产品数据汇聚>数据集成。
2.在左侧导航栏,单击数据源>数据源列表,进入工作空间管理>数据源管理页面。
3.在数据源管理页面,单击右上方的新增数据源。
4.在新增数据源对话框中,选择数据源类型为 My SQL
5.在新增 MySQL 数据源对话框中,配置各项参数。
数据源类型:选择阿里云实例模式。
数据源名称:输入 rds_workshop_log.
数据源描述:输入 RDS 日志数据同步。
适用环境:勾选开发。
说明:开发环境的数据源创建完成后,需要勾选生产,以同样方式创建生产环境的数据源,否则任务生产执行会报错。
地区:选择 RDS 实例所在的区域。
RDS 实例 ID:输入 rm-bp1z69dodhh85z9qa.
RDS 实例主账号 ID:输入 1156529087455811。
数据库名:输入 workshop.
用户名:输入 workshop.
密码:输入 workshop#2017。
6.在资源组列表,单击相应资源组后的测试连通性。
数据同步时,一个任务只能使用—种资源组。
您需要测试每种资源组的连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。
如果您需要同时测试多种资源组,请选中相应资源组后,单击批量测试连通性。详情请参见选择网络连通方案。
7.测试连通性通过后,单击完成。
五、创建业务流程
1.单击当前页面左上方的图标,选择全部产品>数据开发> DataStudio(数据开发)。
2.在数据开发面板,右键单击业务流程,选择新建业务流程。
3.在新建业务流程对话框中,输入业务名称和描述。
注意:业务名称不能超过 128 个字符,且必须是大小写字母、中文、数字、下划线(_)以及小数点(.)。
4.单击新建。
5.进入业务流程开发面板,鼠标单击虚拟节点并拖拽至右侧的编辑页面。
6.在新建节点对话框中,输入节点名称为 workshop_start,单击提交。
以同样的方式新建两个离线同步节点,节点名称分别为 oss 数据同步和 rds 数据同步。
7.通过拖拽连线,将 workshop_start 节点设置为两个离线同步节点的上游节点。
六、配置 workshop_start 节点
1. 在数据开发页面,双击相应业务流程下的虚拟节点。打开该节点的编辑页面,单击右侧的调度配置。
2. 在调度依赖区域,单击使用工作空间根节点,设置 workshop_start 节点的上游节点为工作空间根节点。
由于新版本给每个节点都设置了输入输出节点,所以需要给 workshop_start 节点设置一个输入。此处设置其上游节点为工作空间根节点,通常命名为工作空间名称_root
七、新建表
1. 在数据开发页面打开新建的业务流程,右键单击 MaxCompute,选择新建>表。
2.在新建表对话框中,输入表名,单击提交。
此处需要创建两张表 (ods_raw_log_d和ods_user_info_d),分别存储同步过来的OSS 日志数据和 RDS 日志数据。
注意:表名必须以字母开头,不能包含中文或特殊字符,且不能超过 64 个字符。
3.通过 DDL 模式新建表。
新建 ods_raw_log_d 表。
在表的编辑页面单击 DDL 模式,输入下述建表语句。
--创建 OSS 日志对应目标表
CREATE TABLE IF NOT EXISTS ods_raw_log_d (
col STRING
)
PARTITIONED BY (
dt STRING
);
新建 ods_user_info_d 表。
在表的编辑页面单击 DDL 模式,输入下述建表语句。
--创建 RDS 对应目标表
CREATE TABLE IF NOT EXISTS ods_user_info_d (
uid STRING COMMENT '用户ID',
gender STRING COMMENT '性别',
age_range STRING COMMENT '年龄段',
zodiac STRING COMMENT '星座'
)
PARTITIONED BY (
dt STRING
);
4.单击生成表结构,并确认覆盖当前操作。
5.返回建表页面,在基本属性中输入表的中文名。
6.完成设置后,分别单击提交到开发环境和提交到生产环境。
八、配置离线同步节点
1.配置 oss_ 数据同步节点。
(1)在数据开发页面,双击 oss_ 数据同步节点,进入节点配置页面。
(2)选择数据来源。
数据源:选择 Oss > oss_workshop_log 数据源。
Object前缀:输入 OSS 文件夹的路径,请勿填写 Bucket 的名称。示例为user_log.txt。
文本类型:选择 text 类型。
列分隔符输入列分隔符为 |。
编码格式:默认为 UTF-8 格式。
null 值:表示 null 值的字符串。
压缩格式:包括 None、Gzip、Bzip2 和 Zip 四种类型,此处选择 None。
是否包含表头:默认为 No。
(3)选择数据去向。
数据源:选择 ODPS > odps_first 数据源。
表:选择数据源中的 ods_raw_log_d 表。
分区信息:默认配置为$ {bizdate}.
清理规则:默认为写入前清理已有数据。
空字符串作为 null:此处勾选否。
(4)配置字段映射。
(5)配置通道控制。
(6)单击页面右侧的调度配置,在调度依赖>本节点的输出区域,输入本节点的输出名称为工作空间名称 . ods_raw_log_d。
(7)确认当前节点的配置无误。
(8)关闭当前任务,返回业务流程配置面板。
2.配置 rds_ 数据同步节点。
(1)在数据开发页面,双击 rds_ 数据同步节点,进入节点配置页面。
(2)选择数据来源。
(3)选择数据去向。
(4)配置字段映射。
(5)配置通道控制。
(6)单击页面右侧的调度配置,在调度依赖>本节点的输出区域,输入本节点的输出名称为工作空间名称 .ods_user_info_d。
添加成功后,您可以删除不规范的输出名称。
(7)确认当前节点的配置无误。
(8)关闭当前任务,返回业务流程配置面板。
九、提交业务流程
1. 在数据开发页面,双击相应的业务流程打开编辑页面。
2.选择提交对话框中需要提交的节点,输入备注,勾选忽略输入输出不一致的告警。
3.单击提交,待显示提交成功即可。
十、运行业务流程
1. 在数据开发页面,双击相应的业务流程打开编辑页面。
2.右键单击 rds_ 数据同步节点,选择查看日志。
当日志中出现如下字样,表示同步节点运行成功,并成功同步数据。
2.右键单击 rds_ 数据同步节点,选择查看日志。
当日志中出现如下字样,表示同步节点运行成功,并成功同步数据。
十一、确认数据是否成功导入 MaxCompute
1.在数据开发页面的左侧导航栏,单击临时查询,进入临时查询面板。
2.右键单击临时查询,选择新建节点 >ODPS SQL。
3.编写并执行 SQL 语句,查看导入 ods_raw_log_d和ods_user_info_d 的记录数。
设计业务流程:
业务流程节点间依赖关系的配置请参见采集数据。
双击新建的业务流程打开编辑页面,鼠标单击 ODPS SQL 并拖拽至右侧的编辑页面。在新建节点对话相中,输入节点名称,单击提交。
此处需要新建三个 ODPS SQL 节点,依次命名为 ods_log_info_d、 dw_user_info_all_d 和 rpt_user_info_d,并配置如下图所示的依赖关系。
创建用户自定义函数
1.新建资源。
(1)下载 ip2region.jar.
(2)在数据开发页面打开业务流程,右键单击 MaxCompute,选择新建>资源>JAR。
(3)在新建资源对话框中,输入资源名称,并选择目标文件夹。
(4)单击点击上传,选择已经下载至本地的 ip2region.jar,单击打开。
(5)单击确定。
(6)单击工具栏中的图标。
2.注册函数。
(1)在数据开发页面打开业务流程,右键单击 MaxCompute,选择新建>函数。
(2)在新建函数对话框中,输入函数名称(示例为 getregion),单击提交。
(3)在注册函数对话框中,配置各项参数。
十二、配置 ODPS SQL 节点
1.配置 ods_log_info_d 节点。
(1)双击 ods_log_info_d 节点,进入节点配置页面。
(2)在节点编辑页面,编写如下SQL语句。
INSERT OVERWRITE TABLE ods_log_info_d PARTITION (dt=${bdp.system.bizdate})
SELECT ip
, uid
, time
, status
, bytes
, getregion(ip) AS region --使用自定义UDF通过IP得到地域。
, regexp_substr(request, '(^[^ ]+ )') AS method --通过正则把request差分为3个字段。
, regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') AS url
, regexp_substr(request, '([^ ]+$)') AS protocol
, regexp_extract(referer, '^[^/]+://([^/]+){1}') AS referer --通过正则清晰refer,得到更精准的URL。
, CASE
WHEN TOLOWER(agent) RLIKE 'android' THEN 'android' --通过agent得到终端信息和访问形式。
WHEN TOLOWER(agent) RLIKE 'iphone' THEN 'iphone'
WHEN TOLOWER(agent) RLIKE 'ipad' THEN 'ipad'
WHEN TOLOWER(agent) RLIKE 'macintosh' THEN 'macintosh'
WHEN TOLOWER(agent) RLIKE 'windows phone' THEN 'windows_phone'
WHEN TOLOWER(agent) RLIKE 'windows' THEN 'windows_pc'
ELSE 'unknown'
END AS device
, CASE
WHEN TOLOWER(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler'
WHEN TOLOWER(agent) RLIKE 'feed'
OR regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') RLIKE 'feed' THEN 'feed'
WHEN TOLOWER(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)'
AND agent RLIKE '^[Mozilla|Opera]'
AND regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') NOT RLIKE 'feed' THEN 'user'
ELSE 'unknown'
END AS identity
FROM (
SELECT SPLIT(col, '##@@')[0] AS ip
, SPLIT(col, '##@@')[1] AS uid
, SPLIT(col, '##@@')[2] AS time
, SPLIT(col, '##@@')[3] AS request
, SPLIT(col, '##@@')[4] AS status
, SPLIT(col, '##@@')[5] AS bytes
, SPLIT(col, '##@@')[6] AS referer
, SPLIT(col, '##@@')[7] AS agent
FROM ods_raw_log_d
WHERE dt = ${bdp.system.bizdate}
) a;
2.配置 dw_user_info_all_d 节点。
(1)双击 dw_user_info_all_d 节点,进入节点配置页面。
(2)在节点编辑页面,编写如下 SQL 语句。
INSERT OVERWRITE TABLE dw_user_info_all_d PARTITION (dt='${bdp.system.bizdate}')
SELECT COALESCE(a.uid, b.uid) AS uid
, b.gender
, b.age_range
, b.zodiac
, a.region
, a.device
, a.identity
, a.method
, a.url
, a.referer
, a.time
FROM (
SELECT *
FROM ods_log_info_d
WHERE dt = ${bdp.system.bizdate}
) a
LEFT OUTER JOIN (
SELECT *
FROM ods_user_info_d
WHERE dt = ${bdp.system.bizdate}
) b
ON a.uid = b.uid;
3.配置 rpt_user_info_d 节点。
(1)双击 rpt_user_info_d 节点,进入节点配置页面。
(2)在节点编辑页面,编写如下 SQL 语句。
INSERT OVERWRITE TABLE rpt_user_info_d PARTITION (dt='${bdp.system.bizdate}')
SELECT uid
, MAX(region)
, MAX(device)
, COUNT(0) AS pv
, MAX(gender)
, MAX(age_range)
, MAX(zodiac)
FROM dw_user_info_all_d
WHERE dt = ${bdp.system.bizdate}
GROUP BY uid;
十三、业务流程
1、提交业务流程
(1)在业务流程的编辑页面,单击国图标,提交业务流程中已配置完成的节点。
(2)在提交对话框中,选择需要提交的节点,选中忽略输入输出不—致的告警。
(3)单击提交。
2、运行业务流程
(1)在业务流程的编辑页面,验证代码逻辑。
(2)待所有任务运行完成显示绿色箭头后,在左侧导航栏,单击临时查询。
(3)在临时查询面板,右键单击临时查询,选择新建节点 >ODPS SQL。
(4)编写并执行SQL语句,查询任务运行结果,确认数据产出。
3、发布业务流程
提交业务流程后,表示任务已进入开发环境。由于开发环境的任务不会自动调度,您需要发布配置完成的任务至生产环境。
(1)在业务流程的编辑页面,进入发布页面。
(2)选择待发布任务,单击添加到待发布。
(3)单击右上角的待发布列表,进入列表后,单击全部打包发布。
(4)在确认发布对话框中,单击发布。
(5)在左侧导航栏,单击发布包列表,查看发布状态。
4、在生产环境运行任务
(1)任务发布成功后,单击右上角的运维中心。
您也可以进入业务流程的编辑页面,单击工具栏中的前往运维,进入运维中心页面。
(2)在左侧导航栏,单击周期任务运维>周期任务,进入周期任务页面,单击workshop 业务流程。
(3)双击 DAG 图中的虚节点展开业务流程,右键单击 workshop_start 节点,选择补数据>当前节点及下游节点。
(4)选中需要补数据的任务,输入业务日期,单击确定,自动跳转至补数据实例页面。
(5)单击刷新,直至 SQL 任务全部运行成功即可。
十四、配置数据质量监控
配置表 ods_raw_log_d 的监控规则。
1.在已添加的分区表达式模块,单击+,添加分区表达式。
ods_raw_log_d 表的数据来源为 oss_workshop_log,数据是从 OSS 中获取到的日志数据,其分区格式为 ${bdp.system.bizdate}( 获取到前—天的日期)。
对于此类每天产出的日志数据,您可以配置表的分区表达式。在添加分区对话框中,选择 dt=$lyyyymmdd-1],单击确认。分区表达式的详情请参见基础属性:调度参数。
2.单击创建规则,默认在模板规则对话框。
3.单击添加监控规则,选择规则模板为表行数,固定值,设置规则的强度为强、比较方式为期望值大于 0。
表 ods_raw_log_d 的数据来源于 OSS 上传的日志文件,作为源头表,您需要尽早判断该表的分区中是否存在数据。如果该表没有数据,则需要阻止后续任务运行。如果来源表没有数据,后续任务运行无意义。
配置完成后,单击批量保存。
4.单击试跑,在试跑对话框中,选择调度时间,单击试跑。
试跑可以立即触发数据质量的校验规则,对配置完成的规则进行校检。试跑完成后,单击试跑成功!点击查看试跑结果,即可跳转至试跑结果页面。
5.进行关联调度。
数据质量支持和调度任务关联。在表规则和调度任务绑定后,任务实例运行完成都会触发数据质量的检查。您可以通过以下两种方式进行表规则和任务的关联调度:
(1)在运维中心页面关联表规则
单击左上方的目图标,选择全部产品>运维中心。
在左侧导航栏,单击周期任务运维>周期任务。在 DAG 图中,右键单击 oss_ 数据同步任务,选择配置质量监控。
在配置质量监控对话框中,选择表名 (ods_raw_log_d) 和分区表达式dt=$[yyyymmdd-1]),单击添加。
(2)在数据质量页面关联表规则
在表的监控规则页面,单击关联调度,配置规则与任务的绑定关系。
单击关联调度,可以与已提交到调度的节点任务进行绑定,系统会根据血缘关系给出推荐绑定的任务,也支持自定义绑定。
在关联调度对话框中,输入节点 ID 或节点名称,单击添加。添加完成后,即可完成与调度节点任务的绑定。
6. 订阅任务。
在表的监控规则页面,单击订阅管理,设置接收人以及订阅方式。数据质量支持邮件通知、邮件和短信通知、钉钉群机器人和钉钉群机器人 @ALL。
订阅管理设置完成后,在左侧导航栏,单击我的订阅,查看和修改已订阅的任务。
十五、数据可视化展现
操作步骤
1. 单击进入默认空间,您也可以使用自己的个人空间。
2. 选择数据源≥新建数据源>云数据库> Maxcompute。
3.输入您的 MaxCompute 项目名称以及您的 AcessKey 信息,数据库地址使用默认地址即可,关于数据库地址详情请参见 Endpoint。
完成填写后,单击连接测试,待显示数据源连通性正常后单击添加即可。
4.找到您刚添加的数据源的 rpt_user_info_d 表,单击创建数据集。
5. 进入数据集列表页,单击您刚刚创建的数据集,对数据集进行编辑。
常见的数据集加工包括:维度、度量的切换、修改维度的类型、增加计算字段、创建层次结构、修改字段的数据类型、更改度量聚合方式、制作关联模型。
6.转换字段的维度类型。完成转换后,您可以根据字段中具体的数值进行过滤筛选。
(1)转换日期字段的维度类型。
右键单击 dt 字段,选择维度类型切换>日期(源数据格式)> yyyyMMdd。
(2)转换地理信息字段的维度类型。
右键单 击 region 字段,选择维度类型切换>地理信息>省/直辖市。转换成功后,在左侧维度栏中会看到亨段前多—个地理位詈图标。
7.制作仪表板。
随着数据的更新,让报表可视化地展现最新数据,这个过程叫制作仪表板。仪表板的制作流程为:确定内容、布局和样式,制作图表,完成动态联动查询。
(1) 单击 rpt_user 数据集后的新建仪表板,选择常规模式,进入仪表板编辑页。
(2)从仪表板空间中向空白区拖 入 1 个指标看板。
选择数据来源为数据集 rpt_user,选择度量为 pv。
(3)制作趋势图:将图表区域内的线图拖拽到左侧画布。参数配置如下,完成之后单击更新:
值轴/度量: pv
类别轴/维度:dt (day)
颜色图例/维度:age_range
过滤器: dt (year)
(4)制作色彩地图:单击图表区域内的色彩地图,并选择数据源来源为数据集rpt_user,选择地理区域/维度为 region、色彩饱和度/度量为 pv,选择完成后单击更新,结果如下。
(5)完成配置后,单击保存及预览,即可看到展示效果。
十六、通过向导模式生成 API
生成 API:
1.在服务开发页面,鼠标悬停至图标,单击 API> 生成 API。
也可以打开相应的业务流程,右键单击 API,选择新建>生成 API。
2.在生成 API 对话框中,配置各项参数。
3、单击确定。
配置 API:
1. 双击打开 API 的编辑页面,在选择表区域,选择数据源类型、数据源名称和数据表名称。
2.在环境配置区域,设置内存和超时时间。
3.在选择参数区域,设置请求参数和返回参数。
您选择数据表后,选择参数区域会自动显示该表的所有字段。根据自身需求,分别选中相应的字段设为请求参数和设为返回参数,添加至请求参数和返回参数列表中。
如果您需要对字段进行排序,单击相应字段后的添加到字段排序,将其添加至排序字段列表中。
您可以根据数据表中的指定字段对API的返回结果进行排序。当您的排序列表中有多个字段时,序号越小的字段,排序的优先级超高,您可以通过上移和下移操作来调整排序字段的优先级。对于每个排序字段,均可以选择升序或降序的方式进行排序。
4.单击 API 编辑页面右侧的请求参数,配置各项参数。
5.单击 API 编辑页面右侧的返回参数,配置各项参数
测试 API
在 API 的编辑页面,单击右上方的测试。