dataworks基础知识介绍+实操培训
-
- 20+种数据源
- 关系型数据库、大型数据存储、非结构化存储、NoSql数据库等,涵盖了90%以上的常用数据源
- 支持经典专有、混合等网络环境
- 集团外或者集团内
- 阿里云数据库实例或本地部署
- 公网可访问或不可访问
- 可视化配置与监控
- 向导模式
- shell+DataX
- 支持多种同步方式
- 实时或者批量
- 全量或者增量
- 同步速度视资源组而定,可横向扩展
- 20+种数据源
-
- DataStudio(DataWorks大数据综合数据开发工作室XStudio的核心-DataStudio:支持流批一体、AI、交互式查询和自定义引擎节点等跨赢取混编工作流可视化开发运维环境,可提供妙计可传参条件判断分支循环依赖大规模强保障周期调度能力的大数据综合开发工作平台,包括:大规模调度Alisa,智能运维,统一元数据等)
- 更友好、更高效、更智能的IDE
- 产品交互升级,全新炫酷皮肤,更易用
- 编辑器SQL输入智能提示,代码格式化和折叠
- SQL结构可视化展示和定位
- 拖拽式可视化DAG开发模式
- 基于DAG模式,提供可视化组件拖拽式流计算
- 任务“零代码”开发
- 新增循环判断控制节点
- 实时转实例,无需再等T+1生效
- 新增自定义节点
-
场景:海量日志分析
-
数据集成、数据开发、数据分析、运维中心、数据质量、数据服务、数据服务
-
开通地址:https://data.aliyun.com/product/ide?spm=5176.10695662.881989.1.52434695XIl4Yx
-
--创建OSS日志对应目标表 CREATE TABLE IF NOT EXISTS ods_raw_log_d ( col STRING ) PARTITIONED BY ( dt STRING );
--创建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 );
- 在数据开发面板,打开新建的业务流程,右键单击MaxCompute,选择新建 > 表。在新建表对话框中,输入表名,单击提交。此处需要创建3张表,分别为ODS层表(ods_log_info_d)、DW层表(dw_user_info_all_d)和RPT层表(rpt_user_info_d)。
- 通过DDL模式新建表。新建ods_log_info_d表。双击ods_log_info_d表,在右侧的编辑页面单击DDL模式,输入下述建表语句。
--创建ODS层表 CREATE TABLE IF NOT EXISTS ods_log_info_d ( ip STRING COMMENT 'ip地址', uid STRING COMMENT '用户ID', time STRING COMMENT '时间yyyymmddhh:mi:ss', status STRING COMMENT '服务器返回状态码', bytes STRING COMMENT '返回给客户端的字节数', region STRING COMMENT '地域,根据ip得到', method STRING COMMENT 'http请求类型', url STRING COMMENT 'url', protocol STRING COMMENT 'http协议版本号', referer STRING COMMENT '来源url', device STRING COMMENT '终端类型 ', identity STRING COMMENT '访问类型 crawler feed user unknown' ) PARTITIONED BY ( dt STRING );
- 新建dw_user_info_all_d表。双击dw_user_info_all_d表,在右侧的编辑页面单击DDL模式,输入下述建表语句。
--创建DW层表 CREATE TABLE IF NOT EXISTS dw_user_info_all_d ( uid STRING COMMENT '用户ID', gender STRING COMMENT '性别', age_range STRING COMMENT '年龄段', zodiac STRING COMMENT '星座', region STRING COMMENT '地域,根据ip得到', device STRING COMMENT '终端类型 ', identity STRING COMMENT '访问类型 crawler feed user unknown', method STRING COMMENT 'http请求类型', url STRING COMMENT 'url', referer STRING COMMENT '来源url', time STRING COMMENT '时间yyyymmddhh:mi:ss' ) PARTITIONED BY ( dt STRING );
- 新建rpt_user_info_d表。双击rpt_user_info_d表,在右侧的编辑页面单击DDL模式,输入下述建表语句。
--创建RPT层表 CREATE TABLE IF NOT EXISTS rpt_user_info_d ( uid STRING COMMENT '用户ID', region STRING COMMENT '地域,根据ip得到', device STRING COMMENT '终端类型 ', pv BIGINT COMMENT 'pv', gender STRING COMMENT '性别', age_range STRING COMMENT '年龄段', zodiac STRING COMMENT '星座' ) PARTITIONED BY ( dt STRING );
-
- 配置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;
- 单击左上角的保存图标。
- 配置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;
- 单击左上角的保存图标。
- 配置rpt_user_info_d节点。
- 双击rpt_user_info_d节点,进入节点配置页面。在节点编辑页面,编写如下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;
-