福鼎网站优化公司,建设工程教育网官网下载,网络运营者开展经营和服务活动必须遵守法律行政法规,前端开发培训学校阿里云离线数据仓库第1章 数据仓库概念第2章 项目需求及架构设计2.1 项目需求分析2.2 阿里云技术框架2.2.1 技术选型2.2.2 系统数据流程设计第3章 数据生成模块3.1 埋点数据基本格式3.2 事件日志数据3.2.1 商品列表页#xff08;loading#xff09;3.2.2 商品曝光#xff08…
阿里云离线数据仓库第1章 数据仓库概念第2章 项目需求及架构设计2.1 项目需求分析2.2 阿里云技术框架2.2.1 技术选型2.2.2 系统数据流程设计第3章 数据生成模块3.1 埋点数据基本格式3.2 事件日志数据3.2.1 商品列表页loading3.2.2 商品曝光display3.2.3 商品详情页newsdetail3.2.4 购物车cart3.2.5 广告ad3.2.6 消息通知notification3.2.7 评论comment3.2.8 收藏favorites3.2.8 点赞praise3.2.10 错误日志error3.3 启动日志数据start第4章 数据采集模块4.5 Flume安装及使用4.6 DataHub安装及使用4.6.1 DataHub 简介4.8 DataWorks 和 MaxCompute4.8.1 简介第5章 用户数据行为数仓搭建5.1 数仓分层概念5.1.1 数仓分层5.1.2 数仓分层优点5.1.3 数仓命名规范5.5 DataHub 推送数据到MaxCompute5.6 明细数据层DWD层5.6.1 日志格式分析5.6.2 自定义UDTF解析具体事件字段5.6.5 数据导入脚本5.7.3 数据导入脚本5.8 应用数据层ADS层第6章 业务数仓理论6.1 表的分类6.1.1 实体表6.1.2 维度表6.1.3 事务型事实表6.1.4 周期型事实表6.2 同步策略6.2.1 实体表同步策略6.2.2 维度表同步策略6.2.3 事务型事实表同步策略6.2.4 周期型事实表同步策略第7章 业务数仓搭建7.1 业务数仓架构图7.2 RDS 服务器准备7.2.1 RDS 服务器购买7.5.3 每日增量表同步7.5.4 每日新增及变化表同步7.6 DWD层7.6.2 手动将数据导入 DWD 层7.7 DWS层7.8 ADS层第8章 数据导出与作业调度8.1 创建结果数据库8.2 创建商品销售数据同步节点第9章 数据可视化第1章 数据仓库概念
数据仓库定义(Data Warehouse)是为企业所有决策制定过程提供所有系统数据支持的战略集合。数据仓库好处可以帮助企业改进业务流程、控制成本、提高产品质量等。数据仓库做什么清洗、转义、分类、重组、合并、拆分统计等。数据仓库输出到哪报表系统、用户画像、推荐系统、机器学习、风控系统等。
第2章 项目需求及架构设计
2.1 项目需求分析
采集埋点日志数据用户行为数据仓库用户来到网站/APP的行为(干了那些事)包括一些异常或故障。以文件的形式存储采集业务数据库中数据业务数仓网站/APP中的各功能组件运行时所产生的数据。 以MySQL数据库的形式存储数据仓库的搭建用户行为数仓、业务数仓分析统计各种业务指标比如日活跃用户、新增用户、交易额等。对结果进行可视化展示
2.2 阿里云技术框架 2.2.1 技术选型 2.2.2 系统数据流程设计 第3章 数据生成模块
3.1 埋点数据基本格式
公共字段比如基本所有安卓手机都包含的字段。业务字段埋点上报的字段有具体的业务类型。
3.2 事件日志数据
3.2.1 商品列表页loading 3.2.2 商品曝光display
事件标签display
3.2.3 商品详情页newsdetail
事件标签newsdetail
3.2.4 购物车cart
事件名称cart
3.2.5 广告ad
事件名称ad
3.2.6 消息通知notification
事件标签notification
3.2.7 评论comment
评论表标签comment
3.2.8 收藏favorites
收藏标签favorites
3.2.8 点赞praise
点赞标签praise
3.2.10 错误日志error
错误日志标签error帮助发现问题进行改善提升。
3.3 启动日志数据start
启动日志标签start
第4章 数据采集模块
4.5 Flume安装及使用
Flume 是 Cloudera 提供的一个高可用的高可靠的分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构灵活简单。
Source主要负责采集工作采用 TailDir 组件用于监控文件或文件夹的变化。Channel扮演数据管道的角色对数据进行缓冲。采用非持久化的 Memory类型。
4.6 DataHub安装及使用
4.6.1 DataHub 简介
Flume 部分已经可以输出后就开始搭建真正需要输出的目的地—DataHub即阿里云数据总线服务。 通俗来说这个 DataHub类似于传统大数据解决方案中 Kafka 的角色提供了一个数据队列功能。 对于离线计算DataHub 除了提供了一个缓冲的队列作用。同时由于DataHub提供了各种与其他阿里云上下游产品的对接功能所以DataHub又扮演了一个数据的分发枢纽工作。
DataHub 输入组件包括 Flume主流的开源日志采集框架。 DTS类似 Canal日志实时监控采集框架。 Logstash也是日志采集框架通常和 Elasticsearch、Kibana 集合使用。 FluentdFluentd 是一个实时开源的数据收集器。 OGG实时监控 Oracle 中数据变化。
DataHub 输出组件包括 RDS类似于传统 MySQL 数据库。 DB面向分析型的分布式数据库。 MaxCompute离线分析框架。 Elasticsearch数据分析倒排索引。 StreamCompute实时分析框架。 TableSotre类似于 RedisKV 形式存储数据。 OSS类似于 HDFS存储图片视频。
4.8 DataWorks 和 MaxCompute
4.8.1 简介
MaxCompute大数据计算服务是阿里巴巴自主研发的海量数据处理平台主要提供数据上传和下载通道提供 SQL 及 MapReduce 等多种计算分析服务同时还提供完善的安全解决方案。
DataWorks数据工场原大数据开发套件是基于 MaxCompute 计算引擎的一站式大数据工场它能帮助您快速完成数据集成、开发、治理、服务、质量、安全等全套数据研发工作。
图27-1:37
盘古分布式文件系统相当于Hadoop 中的 HDFS。 伏羲分布式调度系统相当于Hadoop 中的 YARN。 MaxCompute Engine统一计算引擎相当于MR、Tez等计算引擎。
MaxCompute 和 DataWorks 一起向用户提供完善的ETL 和数仓管理能力以及 SQL、MR、Graph 等多种经典的分布式计算模型能更快速地解决用户海量数据计算问题有效降低企业成本保障数据安全。
第5章 用户数据行为数仓搭建
5.1 数仓分层概念
5.1.1 数仓分层
图29-1:37
ODS层原始数据层存放原始数据直接加载原始日志、数据、数据保持原貌不做处理备份。DWD层对ODS层数据进行清洗去除空值脏数据超过极限范围的数据DWS层以DWD层为基础进行轻度汇总。ADS层为各种统计报表提供数据。
5.1.2 数仓分层优点
把复杂问题简单化将一个复杂的任务分解成多个步骤来完成每一层只处理单一的步骤比较简、并且方便定位问题。减少重复开发规范数据分层通过的中间层数据能够减少极大的重复计算增加一次计算结果的复用性。隔离原始数据不论是数据的异常还是数据的敏感性使真实数据与统计数据解耦开。
5.1.3 数仓命名规范
ODS层命名为ods前缀。DWD层命名为dwd前缀。DWS层命名为dws前缀。ADS层命名为ads前缀。维度表命名为dim前缀。每日全量导入命名为dfday full后缀。每日增量导入命名为diday increase后缀。
5.5 DataHub 推送数据到MaxCompute
之前 Flume 中的数据利用 DataHub Sink 把数据写入到了 DataHub 中DataHub 中提供了很多的其他第三方的 DataConnector 可以连接各种例如MaxComputeElasticSearchADBRDS等数据库。
所以就要建立 DataConnector 把数据推送到 MaxCompute 中。
5.6 明细数据层DWD层
DWD 层主要是对ODS层数据进行清洗去除空值脏数据超过极限范围的数据。DWD 层处理后的表能够成为非常明确可用的基础明细数据。
5.6.1 日志格式分析
1日志格式服务器时间 | json 2其中 json 包括 cm公共字段的 key apapp 的名称 et具体事件。
5.6.2 自定义UDTF解析具体事件字段
开发 UDTF 有两个方法
方法1在本地 IDEA 中创建工程开发代码打包把 JAR 上传到 DataStudio 成为资源 JAR 包。然后基于资源 JAR 包声明函数。方法2直接在 FunctionStudio 中开发然后在线打包发布程序声明函数。相比而言从发布流程上来说利用 FunctionStudio 更快捷方便。但是从 IDEA 开发角度来说网页版本的 FunctionStudio肯定不如客户端的功能强大、反应速度流畅。不多也可以两者配合起来使用。
p34未详细学习。
5.6.5 数据导入脚本
1在流程中加入一个数据开发脚本
去重有两种方式 1.按照某一个字段进行 group by; 2.开窗函数。 向 dws_uv_detail_d 表中插入数据数据来源于一个子查询 子查询里是一个开窗对于 mid(设备id)进行开窗开窗之后只取第一条。
INSERT OVERRITE TABLE dws_uv_detail_d PARTITION (ds,hh,mm)
SELECTmid,user_id,version_code,version_name,lang,source,os,area,model,brand,sdk_version,email,height_width,network,lng,lat,event_time,ds,hh,mm
from
(select*,ROW_NUMBER() OVER(PARTITION BY mid ORDER BY event_tion asc) AS rn from dwd_start_logwhere ds20191008
) st where rn 1;5.7.3 数据导入脚本
DWS 层一般围绕某个主题进行聚合、拼接处理。 针对统计日活的需求DWS 主要的工作就进行以日为单位的去重操作。
1在流程中加入一个数据开发脚本 在数据开发中新建一个ODPS SQL 图39-00:18
5.8 应用数据层ADS层
统计各个渠道的 uv 个数
第6章 业务数仓理论
6.1 表的分类
6.1.1 实体表
实体表一般是指一个实现存在的业务对象比如用户、商品、商家、销售员等等。
6.1.2 维度表
维度表一般是指对应一些业务状态编号的解释表。也可以称之为码表。比如地区表订单状态支付方式审批状态商品分类等等。
6.1.3 事务型事实表
事务型事实表一般指随着业务发生不断产生的数据。特点是一旦发生不会再变化。一般比如交易流水操作日志出库入库记录等等。
6.1.4 周期型事实表
周期型事实表一般指随着业务发生不断产生的数据。 与事务型不同的是数据会随着业务周期性的推进而变化。 比如订单其中订单状态会周期性变化。再比如请假、贷款申请随着批复状态在周期性变化。
6.2 同步策略
数据同步策略的类型包括全量表、增量表、新增及变化表。
全量表存储完整的数据。增量表存储新增加的数据。新增及变化表存储新增加的数据和变化的数据。
6.2.1 实体表同步策略
实体表比如用户、商品、商家、销售员等。 实体表数据量比较小通常可以做每日全量就是每天存一份完整数据及每日全量。
6.2.2 维度表同步策略
维度表比如订单状态审批状态商品 分类。 维度表数据量比较小通常可以做每日全量就是每天存一份完整数据。即每日全量。 说明
针对可能会有变化的状态数据可以存储每日全量。没变化的客观世界的维度比如性别地区民族政治成分鞋子尺码可以只存一份固定值。
6.2.3 事务型事实表同步策略
事务型事实表比如交易流水操作日志出库入库记录等。 因为数据不会变化而且数据量巨大所以每天只同步新增数据即可所以可以做成每日增量表即每日创建一个分区存储。
6.2.4 周期型事实表同步策略
周期型事实表比如订单、请假、贷款申请等。 这类表从数据量的角度存每日全量的话数据量太大冗余也太大。如果每日增量无法反应数据变化则导每日新增及变化量包括了当日的新增和修改。
第7章 业务数仓搭建
7.1 业务数仓架构图 7.2 RDS 服务器准备
7.2.1 RDS 服务器购买
阿里云关系型数据库Relational DataBase Service, 简称 RDS是一种稳定可靠、可弹性伸缩的在线数据库服务器。
7.5.3 每日增量表同步
1同步策略每日增量 每日新增的表包括ods_order_detail
每日增量的区别就是要按照日期进行过滤只筛选出今天新产生的数据。 条件
DATE_FORMAT(create_time,%Y%m%d) ${bizdate}7.5.4 每日新增及变化表同步
1同步策略每日新增及变化 每日新增及变化的表包括ods_order_info
条件如果创建时间是当日或者操作时间是当日则满足条件。
DATE_FORMAT(create_time, %Y%m%d)${bizdate} or
DATE_FORMAT(operate_time, %Y%m%d)${bizdate}7.6 DWD层
DWD 层一般是对 ODS 层数据进行一定的清洗加工如果是面对关系导入过来的数据表还要把原本的关系型表结构进行一定程度的维度退化。作为更易处理的明细数据。
比如 ODS 地区 ODS 省份 DWD 省份地区 ODS 商品信息 ODS 品牌 ODS 商品一级分类 ODS 商品二级分类 ODS商品三级分类 DWD 商品信息
7.6.2 手动将数据导入 DWD 层
1在临时查询中执行
Insert overwrite table dwd_order_info_di partition(ds)
Select id,total_amont,order_status,user_id,payment_way,out_trade_no,province_id,create_time,operate_time,ds
from ods_order_info_di
where ds${bizdate} and id is not null; //过滤条件id不能为空insert overwrite table dwd_order_detail_di partition(ds)
select od.id,order_id,oi.user_id,sku_idsku_name,order_price,sku_num,oi.province_id,od.create_time,od.ds
from ods_order_detail_di od join ods_order_info_di oi and od.ds ${bizdate} and od.id is not null;//商品表
insert overwrite table dim_sku_info_df partition(ds)
select sku.id,sku.spu_id,sku.price,sku.sku_name,sku.sku_desc,sku.weight,sku,tm_id,tm.tm_name,sku.category3_id,c2.id category2_id,c1.id cate gory1_id,c3.name category3_name,c2.name category2_name,c1.name category1_name,sku.create_time,sku.ds
from
(select *form ods_sku_info_dfwhere ds${bizdate} and id is not null
) sku
join ods_base_category3_df c3 on sku.category3_id c3.id and c3.ds ${bizdate}
join ods baase category2 df c2 on c3.category2_id c2.id and c2.ds ${bizdate}
join ods_base_category1_df c1 on c2.category1_id c1.id and c1.ds ${bizdate}
join ods_base_trademark_df tm on tm.tm_id sku.tm_id and tm.ds ${bizdate};insert overwrite table dim_user_info_df partition(ds)
select id,name,birthday,gender,email,user_level,create_time,ds from ods_user_info_df
where ds${bizdate} and id is not null;insert overwrite table dim_base_province_df partition(ds)
select p.id,p.name,p.region_id,r.region_name,p.ds
from ods_base_province_df p join ods_base_region_df r
on p.region_id r.id and p.ds${bizdate} and r.ds ${bizdate};
7.7 DWS层
DWS 层主要指针对明细粒度的数据进行短周期的汇总。DWS 公共汇总层是面向分析对象的主题聚集建模。
在本教程中最终的分析目标为最近一天某个类目、某个地区、某类人群购买商品的销售总额、购买力分析。因此我们可以以最终交易成功的商品、买家、地区等角度对最近一天的数据进行组合 组合成为涵盖多个维度的事实宽表。
7.8 ADS层
ADS 层主要是指针对某一个特定的维度进行的汇总。
在本课程中主要分析三个需求用户各个年龄段统计、地区销售统计、热门商品排行。所以主要是针对年龄、地区、商品进行汇总统计统计四个指标下单数、购买商品个数、销售额、平均客单价。
第8章 数据导出与作业调度
将 MaxCompute 中的计算完的结果需要导入到RDS数据库中用于后续的可视化。
8.1 创建结果数据库
1在 RDS 服务器中新建一个 gmall_adb 数据库用来保存之后从 MaxCompute 中的结果数据。
8.2 创建商品销售数据同步节点
将ADS层数据导出到 MaxCompute。 1数据开发 - 数据集成 - 新建数据集成节点 - 数据同步
数据集成用于 MaxCompute 对外的输入输出。 数据开发是 MaxCompute 内部层与层之间的脚本编写。
第9章 数据可视化