尚硅谷数据仓库实战之3数仓搭建
数仓笔记
数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS:
尚硅谷数仓实战之1项目需求及架构设计:
尚硅谷数仓实战之2数仓分层+维度建模:
尚硅谷数仓实战之3数仓搭建:
B站直达: 百度网盘: ,提取码:yyds 阿里云盘: ,提取码:335o
第4章 数仓搭建-ODS层
1)保持数据原貌不做任何修改,起到备份数据的作用。
2)数据采用LZO压缩,减少磁盘存储空间。100G数据可以压缩到10G以内。
3)创建分区表,防止后续的全表扫描,在企业开发中大量使用分区表。
4)创建外部表。在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景都是创建外部表。
4.2 ODS层(业务数据)
ODS层业务表分区规划如下
在这里插入图片描述
ODS层业务表数据装载思路如下
在这里插入图片描述
4.2.1 活动信息表
第5章 数仓搭建-DIM层
5.1 商品维度表(全量)
1.建表语句
2.分区规划
在这里插入图片描述
3.数据装载
在这里插入图片描述
5.6 用户维度表(拉链表)
5.6.1 拉链表概述
1)什么是拉链表
在这里插入图片描述
2)为什么要做拉链表
在这里插入图片描述
3)如何使用拉链表
在这里插入图片描述
4)拉链表形成过程
在这里插入图片描述
5.6.2 制作拉链表
1.建表语句
2.分区规划
在这里插入图片描述
3.数据装载
在这里插入图片描述
1)首日装载
拉链表首日装载,需要进行初始化操作,具体工作为将截止到初始化当日的全部历史用户导入一次性导入到拉链表中。目前的ods_user_info表的第一个分区,即2023-06-14分区中就是全部的历史用户,故将该分区数据进行一定处理后导入拉链表的9999-99-99分区即可。
2)每日装载
(1)实现思路
在这里插入图片描述
第6章 数仓搭建-DWD层
1)对用户行为数据解析。
2)对业务数据采用维度模型重新建模。
6.1 DWD层(用户行为日志)
6.1.1 日志解析思路
1)日志结构回顾
(1)页面埋点日志
在这里插入图片描述
(2)启动日志
在这里插入图片描述
2)日志解析思路
在这里插入图片描述
6.1.2 json_object函数使用
Mysql中也有响应的JSON处理函数,不过性能没有hive高。
6.1.3 启动日志表
启动日志解析思路:启动日志表中每行数据对应一个启动记录,一个启动记录应该包含日志中的公共信息和启动信息。先将所有包含start字段的日志过滤出来,然后使用get_json_object函数解析每个字段。
在这里插入图片描述
1)建表语句
6.1.4 页面日志表
页面日志解析思路:页面日志表中每行数据对应一个页面访问记录,一个页面访问记录应该包含日志中的公共信息和页面信息。先将所有包含page字段的日志过滤出来,然后使用get_json_object函数解析每个字段。
6.1.5 动作日志表
动作日志解析思路:动作日志表中每行数据对应用户的一个动作记录,一个动作记录应当包含公共信息、页面信息以及动作信息。先将包含action字段的日志过滤出来,然后通过UDTF
函数,将action数组“炸开”(类似于explode函数的效果),然后使用get_json_object函数解析每个字段。
6.1.7 错误日志表
错误日志解析思路:错误日志表中每行数据对应一个错误记录,为方便定位错误,一个错误记录应当包含与之对应的公共信息、页面信息、曝光信息、动作信息、启动信息以及错误信息。先将包含err字段的日志过滤出来,然后使用get_json_object函数解析所有字段。
6.2 DWD层(业务数据)
6.2.2 订单明细事实表(事务型事实表)
1)建表语句
2)分区规划
在这里插入图片描述
3)数据装载
在这里插入图片描述
6.2.4 加购事实表(周期型快照事实表,每日快照)
1)建表语句
2)分区规划
在这里插入图片描述
3)数据装载
在这里插入图片描述
6.2.7 支付事实表(累积型快照事实表)
1)建表语句
2)分区规划
在这里插入图片描述
drop table if exists user
3)数据装载
在这里插入图片描述
第7章 数仓搭建-DWS层
7.2 DWS层
在这里插入图片描述
在这里插入图片描述
7.2.1 访客主题
1)建表语句
第8章 数仓搭建-DWT层
第9章 数仓搭建-ADS层
9.1 建表说明
ADS层不涉及建模,建表根据具体需求而定。
9.3 用户主题
9.3.1 用户统计
该需求为用户综合统计,其中包含若干指标,以下为对每个指标的解释说明。
指标
说明
对应字段
新增用户数
统计新增注册用户人数
new_user_count
新增下单用户数
统计新增下单用户人数
new_order_user_count
下单总金额
统计所有订单总额
order_final_amount
下单用户数
统计下单用户总数
order_user_count
未下单用户数
统计活跃但未下单用户数
no_order_user_count
1.建表语句
DROP TABLE IF EXISTS ads_user_total;  CREATE EXTERNAL TABLE `ads_user_total` (  `dt` STRING COMMENT '统计日期',  `recent_days` BIGINT COMMENT '最近天数,0:累积值,1:最近1天,7:最近7天,30:最近30天',  `new_user_count` BIGINT COMMENT '新注册用户数',  `new_order_user_count` BIGINT COMMENT '新增下单用户数',  `order_final_amount` DECIMAL(16,2) COMMENT '下单总金额',  `order_user_count` BIGINT COMMENT '下单用户数',  `no_order_user_count` BIGINT COMMENT '未下单用户数(具体指活跃用户中未下单用户)'  ) COMMENT '用户统计'  ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  LOCATION '/warehouse/gmall/ads/ads_user_total/';

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。