https://developer.aliyun.com/adc/scenario/eed3362c8a0943a9b7ab7ec774aed335?spm=a2c6h.13788135.J_2488678810.32.1b1124448p2AbX
时间:20220622
说明 :本场景已为您提供OSS数据源和RDS数据源。
新建OSS数据源。
双击打开虚拟桌面的Chromium网页浏览器。
在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码到用户密码输入框,单击登录。
复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问DataWorks控制台。
https://workbench.data.aliyun.com/
说明:如果您访问DataWorks控制台时,出现了大数据基础服务使用说明网页,请您刷新网页即可。
在概览页面,找到您的资源所在区域,找到您的工作空间,然后单击数据集成。
在左侧导航栏中,单击数据源。
在数据源管理页面,单击右上方的新增数据源。
在新增数据源对话框中,选择数据源类型为OSS。
在新增OSS数据源对话框中,配置各项参数,单击更多选项。
参数说明:
数据源名称:输入oss_workshop_log。
Endpoint:输入http://oss-cn-shanghai-internal.aliyuncs.com。
Bucket:输入new-dataworks-workshop。
AccessKey ID:输入LTAI4FvGT3iU4xjKotpUMAjS。
AccessKey Secret:输入9RSUoRmNxpRC9EhC4m9PjuG7Jzy7px。
在资源组列表,单击公共资源组后的测试连通性。
在新增OSS数据源对话框中,单击完成。
在新增数据源对话框中,选择数据源类型为MySQL
在新增MySQL数据源对话框中,配置各项参数,单击更多选项。
参数说明:
数据源类型:选择阿里云实例模式。
数据源名称:输入rds_workshop_log。
地域:选择华东2(上海)。
RDS实例ID:输入rm-bp1z69dodhh85z9qa。
RDS实例主账号ID:输入1156529087455811。
数据库名:输入workshop。
用户名:输入workshop。
密码:输入workshop#2017。
在数据源管理页面,单击左上方的 图标,单击DataStudio(数据开发)。
在数据开发页面,右键单击业务流程,选择新建业务流程
在新建业务流程对话框中,输入业务名称,例如test,单击新建。
在业务流程开发面板,单击虚拟节点并拖拽至右侧的编辑页面
在新建节点对话框中,节点名称输入为workshop_start,单击提交。
在业务流程开发面板,单击离线同步并拖拽至右侧的编辑页面。
在新建节点对话框中,节点名称输入为OSS_数据同步,单击提交。
说明:由于当前实验环境的虚拟桌面不支持直接复制粘贴中文(复制粘贴会出现乱码),您可以单击虚拟桌面右下角的 图标切换虚拟桌面的输入法,手动输入中文。
在业务流程开发面板,单击离线同步并拖拽至右侧的编辑页面。
在新建节点对话框中,节点名称输入为rds_数据同步,单击提交。
说明:由于当前实验环境的虚拟桌面不支持直接复制粘贴中文(复制粘贴会出现乱码),您可以单击虚拟桌面右下角的 图标切换虚拟桌面的输入法,手动输入中文
在右侧的编辑页面,通过拖拽连线,将workshop_start节点设置为两个离线同步节点的上游节点
在数据开发页面左侧,选择业务流程>您的业务流程>通用,双击虚拟节点workshop_start。
在该节点的编辑页面,单击右侧的调度配置
在调度配置面板的时间属性区域,重跑属性选择为运行成功或失败后皆可重跑。在调度配置面板的调度依赖区域,单击使用工作空间根节点,设置workshop_start节点的上游节点为工作空间根节点。
说明 :
由于新版本给每个节点都设置了输入输出节点,所以需要给workshop_start节点设置一个输入。此处设置其上游节点为工作空间根节点,通常命名为工作空间名称_root。
由于当前实验环境的虚拟桌面浏览器显示问题,如果当前调度配置页面的参数出现了错位,您可以将浏览器的显示百分比设置小一些。
在数据开发页面,选择业务流程>MaxCompute,右键单击表,单击新建表。
在新建表对话框中,表名输入ods_raw_log_d,单击新建。
在表ods_raw_log_d的编辑页面,单击DDL模式。
在DDL模式对话框中,输入如下创建OSS日志对应目标表的建表语句,单击生成表结构。
CREATE TABLE IF NOT EXISTS ods_raw_log_d (
col STRING
)
PARTITIONED BY (
dt STRING
);
在表ods_raw_log_d的编辑页面,中文名输入为OSS日志对应目标表,单击提交到生产环境。
在数据开发页面,选择业务流程>MaxCompute,右键单击表,单击新建表。
在新建表对话框中,表名输入ods_user_info_d,单击提交。
在表ods_user_info_d的编辑页面,单击DDL模式。
在DDL模式对话框中,输入如下创建RDS对应目标表的建表语句,单击生成表结构。
CREATE TABLE IF NOT EXISTS ods_user_info_d (
uid STRING COMMENT 'uid',
gender STRING COMMENT 'gender',
age_range STRING COMMENT 'age_range',
zodiac STRING COMMENT 'zodiac'
)
PARTITIONED BY (
dt STRING
);
在表ods_user_info_d的编辑页面,中文名输入为RDS对应目标表,单击提交到生产环境。
在数据开发页面左侧,选择业务流程>您的业务流程>数据集成,双击oss_di(即下图中的oss_数据同步)。
在oss_di页面的数据来源中,配置如下参数,其他配置保持默认。
参数说明:
数据源:选择OSS>oss_workshop_log数据源。
文件名(含路径):输入user_log.txt。
文件类型:选择text类型。
列分隔符:输入列分隔符为|。
在oss_di页面的数据去向中,配置如下参数,其他配置保存默认。
参数说明:
数据源:选择ODPS>odps_first数据源。
说明:
odps_first数据源是工作空间绑定MaxCompute实例时,系统自动生成的默认数据源。
odps_first数据源写入至当前工作空间下的MaxCompute项目中。
表:选择数据源中的ods_raw_log_d表。
在调度配置面板的时间属性区域,重跑属性选择为运行成功或失败后皆可重跑。在调度依赖面板的本节点的输出区域,输入本节点的输出名称为工作空间名称.ods_raw_log_d,单击添加。
说明 :您可在云产品资源列表中查看工作空间名称
在数据集成资源组配置面板,单击更多选项。
在数据集成资源组配置面板,方案选择调试资源组
在数据开发页面左侧,选择业务流程>数据集成,双击rds_di(即下图中的rds_数据同步)。
在rds_di页面的数据来源中,配置如下参数,其他配置保持默认。
参数说明:
数据源:选择MySQL>rds_workshop_log数据源。
表:选择数据源中的ods_user_info_d表。
在rds_di页面的数据去向中,配置如下参数,其他配置保存默认。
参数说明:
数据源:选择ODPS>odps_first数据源。
表:选择数据源中的ods_user_info_d表。
在调度配置面板的时间属性区域,重跑属性选择为运行成功或失败后皆可重跑。在调度依赖面板的本节点的输出区域,输入本节点的输出名称为工作空间名称.ods_user_info_d,单击添加。
说明 :您可在云产品资源列表中查看工作空间名称。
在数据集成资源组配置面板,单击更多选项。
在数据开发页面左侧,双击您的业务流程。
在上方菜单栏中,单击 图标。
在业务流程的编辑页面,右键单击rds_di(即下图中的rds_数据同步)。
在数据开发页面的左侧导航栏,单击 图标。
在临时查询页面左侧,右键单击临时查询,选择新建节点>ODPS SQL。
在SQL查询页签,输入如下SQL语句,单击 图标,查看导入ods_raw_log_d和ods_user_info_d的记录数。
说明 :SQL语句中字段dt您需要更新为业务日期。例如,任务运行的日期为20180717,则业务日期为20180716,即任务运行日期的前一天。
select count(*) from ods_raw_log_d where dt=${bdp.system.bizdate};
select count(*) from ods_user_info_d where dt=${bdp.system.bizdate};
分别为数据运营层表(ods_log_info_d)、数据仓库层表(dw_user_info_all_d)和数据产品层表(rpt_user_info_d)
在临时查询页面的左侧导航中,单击 图标。
在新建表对话框中,表名输入为ods_log_info_d,单击提交。
在表ods_log_info_d的编辑页面,单击DDL模式。
在DDL模式对话框中,输入如下创建数据运营层表的建表语句,单击生成表结构。
CREATE TABLE IF NOT EXISTS ods_log_info_d (
ip STRING COMMENT 'ip',
uid STRING COMMENT 'uid',
time STRING COMMENT 'timeyyyymmddhh:mi:ss',
status STRING COMMENT 'status',
bytes STRING COMMENT 'bytes',
region STRING COMMENT 'region',
method STRING COMMENT 'method',
url STRING COMMENT 'url',
protocol STRING COMMENT 'protocol',
referer STRING COMMENT 'referer',
device STRING COMMENT 'device',
identity STRING COMMENT 'identity'
)
PARTITIONED BY (
dt STRING
);
在表ods_log_info_d的编辑页面,中文名输入为数据运营层表,单击提交到生产环境。
重复上述步骤,根据如下建表语句,新建dw_user_info_all_d表和rpt_user_info_d表,中文名分别输入为数据仓库层表和数据产品层表,然后单击提交到生产环境。
CREATE TABLE IF NOT EXISTS dw_user_info_all_d (
uid STRING COMMENT 'uid',
gender STRING COMMENT 'gender',
age_range STRING COMMENT 'age_range',
zodiac STRING COMMENT 'zodiac',
region STRING COMMENT 'region',
device STRING COMMENT 'device',
identity STRING COMMENT 'identity',
method STRING COMMENT 'method',
url STRING COMMENT 'url',
referer STRING COMMENT 'referer',
time STRING COMMENT 'timeyyyymmddhh:mi:ss'
)
PARTITIONED BY (
dt STRING
);
CREATE TABLE IF NOT EXISTS rpt_user_info_d (
uid STRING COMMENT 'uid',
region STRING COMMENT 'uid',
device STRING COMMENT 'device',
pv BIGINT COMMENT 'pv',
gender STRING COMMENT 'gender',
age_range STRING COMMENT 'age_range',
zodiac STRING COMMENT 'zodiac'
)
PARTITIONED BY (
dt STRING
);
在数据开发页面左侧,双击您的业务流程。
在业务流程开发面板,单击ODPS SQL并拖拽至右侧的编辑页面。
在新建节点对话框中,节点名称输入为ods_log_info_d,单击提交。
在新建节点对话框中,节点名称输入为dw_user_info_all_d,单击提交。
在新建节点对话框中,节点名称输入为rpt_user_info_d,单击提交。
在右侧的编辑页面,通过拖拽连线,配置如下图所示的依赖关系
复制下方地址,在Chromium浏览器打开新页签,粘贴并访问,下载ip2region.jar。
https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/85298/cn_zh/1532163718650/ip2region.jar?spm=a2c4g.11186623.0.0.43df4d0dwSRLzd&file=ip2region.jar
在数据开发页面,选择业务流程>您的业务流程>MaxCompute,右键单击资源,选择新建>JAR。
在数据开发页面,选择业务流程>您的业务流程>MaxCompute,右键单击函数,单击新建函数。
在新建函数对话框中,函数名称输入为getregion,单击新建。
在注册函数页签,配置如下参数,其他配置保持默认,单击 图标。
参数说明:
类名:输入org.alidata.odps.udf.Ip2Region。
资源列表:输入ip2region.jar。
描述:输入IP地址转换地域。
命令格式:输入getregion(‘ip’)。
参数说明:输入IP地址。
在数据开发页面,选择业务流程>您的业务流程>MaxCompute>数据开发,双击ods_log_info_d。
在ods_log_info_d节点编辑页面,输入如下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;
在数据开发页面,选择业务流程>您的业务流程>MaxCompute>数据开发,双击dw_user_info_all_d。
在dw_user_info_all_d节点编辑页面,输入如下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;
在数据开发页面,选择业务流程>您的业务流程>MaxCompute>数据开发,双击rpt_user_info_d。
在rpt_user_info_d节点编辑页面,输入如下SQL语句,单击 图标。
在数据开发页面左侧,双击您的业务流程。
在业务流程的编辑页面上方菜单栏中,单击 图标,提交业务流程中已配置完成的节点。
在提交对话框中,选择所有的节点,备注输入提交业务流程,选择忽略输入输出不一致的告警,单击提交。
在业务流程的编辑页面上方菜单栏中,单击 图标。
在左侧导航栏中,单击 图标
在临时查询面板,右键单击临时查询,选择新建节点>ODPS SQL。
在新建节点对话框中,单击提交。
在SQL查询页签,输入如下SQL语句,单击 图标,查看rpt_user_info_d数据情况,确认数据产出。
说明 :SQL语句中字段dt您需要更新为业务日期。例如,任务运行的日期为20180717,则业务日期为20180716,即任务运行日期的前一天。
select * from rpt_user_info_d where dt=${bdp.system.bizdate} limit 10;
在发布列表页面上方,单击运维中心。
在周期任务页面,单击workshop_start业务流程。
在DAG图中,右键单击workshop_start节点,选择补数据>当前节点及下游节点。
在补数据对话框中,选择所有任务,单击确定。
返回如下页面,单击刷新,等待3~5分钟,直至所有任务运行成功即可。
在Chromium网页浏览器中,切换至数据开发页签。单击左上方的图标,选择全部产品>数据治理>数据质量。
在按表配置页面,单击ods_raw_log_d表后的配置监控规则。
在添加分区对话框中,分区表达式选择dt=$[yyyymmdd-1],单击确认。
在表ods_raw_log_d的监控规则页面,单击创建规则。
在创建规则面板中,根据如下配置相关参数,其他配置保持默认,单击批量添加。
说明 :该规则主要是为了避免分区中没有数据,导致下游任务的数据来源为空的问题。
参数说明:
规则名称:输入ods_raw_log_d表规则。
强弱:选择强。
规则模板:选择表行数,固定值。
比较方式:选择大于
进行关联调度。
数据质量支持和调度任务关联。在表规则和调度任务绑定后,任务实例运行完成都会触发数据质量的检查。
在表ods_raw_log_d的监控规则页面,单击关联调度。
在关联调度对话框中,任务节点名称输入为oss_数据同步,单击添加。
说明 :ods_user_info_d是用户信息表,您在配置规则时,需要配置表的行数校验和主键唯一性校验,避免数据重复。
在Chromium网页浏览器中,切换至按表配置页签。在按表配置页面,单击ods_user_info_d表后的配置监控规则。
在表ods_user_info_d的监控规则页面,单击创建规则
在创建规则面板中,根据如下配置相关参数,其他配置保持默认,单击添加监控规则。
参数说明:
规则名称:输入表级规则。
强弱:选择强。
规则模板:选择表行数,固定值。
比较方式:选择大于。
期望值:输入0。
在创建规则面板中,根据如下配置相关参数,其他配置保持默认,单击批量添加。
参数说明:
规则名称:输入列规则。
强弱:选择弱。
规则字段:选择uid(string)。
规则模板:选择重复值个数,固定值。
比较方式:选择小于。
期望值:输入1。
ods_log_info_d数据主要来源于解析ods_raw_log_d表中的数据。鉴于日志中的数据无法配置过多监控,只需要配置表数据不为空的校验规则即可。
在Chromium网页浏览器中,切换至按表配置页签。在按表配置页面,单击ods_log_info_d表后的配置监控规则。
在添加分区对话框中,分区表达式选择dt=$[yyyymmdd-1],单击确认。
在创建规则面板中,根据如下配置相关参数,其他配置保持默认,单击批量添加。
参数说明:
规则名称:输入ods_log_info_d表级规则。
强弱:选择强。
规则模板:选择表行数,固定值。
比较方式:选择不等于。
期望值:输入0。
在Chromium网页浏览器中,切换至按表配置页签。在按表配置页面,单击rpt_user_info_d表后的配置监控规则。
在添加分区对话框中,分区表达式选择dt=$[yyyymmdd-1],单击确认。
在创建规则面板中,根据如下配置相关参数,其他配置保持默认,单击添加监控规则。
参数说明:
规则名:输入rpt_user_info_d列级规则。
强弱:选择弱。
规则字段:选择uid(string)。
规则模板:选择重复值个数,固定值。
比较方式:选择小于。
期望值:输入1
在创建规则面板中,根据如下配置相关参数,其他配置保持默认,单击批量添加。
参数说明:
规则名称:输入rpt_user_info_d表级规则。
强弱:选择弱。
规则模板:选择表行数,7天波动率。
橙色阈值:输入1。
http://das.base.shuju.aliyun.com/console.htm
在添加数据源对话框中,选择云数据库>MaxCompute。
在添加MaxCompute数据源对话框中,配置如下参数,单击连接测试,待数据源连通性正常后,单击确定。
参数说明:
显示名称:自定义显示名称,示例为test。
数据库地址:使用默认地址,无需修改。
项目名称:输入MaxCompute项目名称。
AcessKey ID:输入子账号的AccessKey ID。
AcessKey Secret:输入子账号的AcessKey Secret。
说明 :您可在云产品资源列表中查看MaxCompute项目名称、AccessKey ID和AcessKey Secret。
在数据源页面,选择您刚刚添加的数据源,单击同步并刷新页面。
在数据源页面,找到rpt_user_info_d表,单击操作列下 图标。
转换日期字段的维度类型。
在数据集编辑页面的维度区域,右键单击dt字段,选择维度类型切换>日期>yyyyMMdd。
这里注意,根据我的实验验证下来进行转换会报错!!!
在数据集编辑页面的维度区域,右键单击region字段,选择维度类型切换>地理>省/直辖市。
在保存数据集对话框中,名称输入为rpt_user,位置选择根目录,单击确定。
随着数据的更新,让报表可视化地展现最新数据,这个过程叫制作仪表板。仪表板的制作流程为:确定内容、布局和样式、制作图表和完成动态联动查询。
在数据集编辑页面,选择右上方的开始分析>创建仪表板。
在数据面板,将维度中的dt(year)拖拽到过滤器,将度量中的pv拖拽到看板指标/度量。
在设置过滤器对话框中,过滤条件的开始于输入为0,过滤条件的结束于输入为0,单击确定。
在指标看板面板,单击更新。
在上方菜单栏中,将线图拖拽到下方画布中。
在数据面板,将维度的dt(day)拖拽到类别轴/维度,将度量的pv拖拽到值轴/度量,将维度的age_range拖拽到颜色图例/维度,将维度中的dt(year)拖拽到过滤器。
在线图面板,单击更新