【企业流行新数仓】Day01:新版本对比、业务和表的介绍☆、Hive、ODS层、DWD层
一、2.0版本对比

二、业务介绍
1、术语
SKU
SPU
UV: user views 用户浏览总量【浏览量】
PV:page views 页面浏览总量
2、电商业务表结构
| 表名 | 同步方式 | 字段名 | 字段描述 |
|---|---|---|---|
| order_info(订单表) | 新增和变化 | order_status | 订单状态(会被修改) |
| create_time | 创建时间 | ||
| operate_time | 操作时间(最后一次修改订单的时间) | ||
| order_detail(订单详情表) | 增量 | create_time | 创建时间 |
| order_id | 订单号可以和order_info.id关联 | ||
| sku_info(sku商品表) | 全量 | create_time | 创建时间 |
| user_info(用户表) | 新增和变化 | create_time | 创建时间 |
| operate_time | 操作时间(最后一次用户信息的时间) | ||
| payment_info(支付流水表) | 增量 | payment_time | 支付时间 |
| base_category1(商品一级分类表) | 全量 | ||
| base_category2(商品二级分类表) | 全量 | ||
| base_category3(商品三级分类表) | 全量 | ||
| base_province(省份表) | 全量导一次 | ||
| base_region(地区表) | 全量导一次 | ||
| base_trademark(品牌表) | 全量 | ||
| order_status_log(订单状态表) | 增量 | operate_time | 操作时间 |
| spu_info(SPU商品表) | 全量 | ||
| comment_info(商品评论表) | 增量 | create_time | 创建时间 |
| order_refund_info(退单表) | 增量 | create_time | 创建时间 |
| cart_info(加购表) | (特殊)全量 | create_time | 创建时间 |
| operate_time | 操作时间(最后一次修改购物车的时间) | ||
| favor_info(商品收藏表) | (特殊)全量 | create_time | 创建时间 |
| cancel_time | 取消收藏的最后一次时间 | ||
| coupon_use(优惠券领用表) | 增量和变化 | get_time | 领券时间 |
| using_time | 使用时间 | ||
| used_time | 支付时间 | ||
| coupon_info(优惠券表) | 全量 | create_time | 创建时间 |
| activity_info(活动表) | 全量 | create_time | 创建时间 |
| activity_order(活动订单关联表) | 增量 | create_time | 创建日期 |
| activity_rule(优惠规则表) | 全量 | ||
| base_dic(编码字典表) | 全量 | create_time | 创建日期 |
| operate_time | 操作时间(最后一次修改的时间) | ||
| date_info(时间表) | 全量导一次 | ||
| holiday_info(假期表) | 全量导一次 | ||
| holiday_year(假期年表) | 全量导一次 |
增量表
全量表(包括导一次和导多次)
新增和变化表
3、业务表同步方式
(1)周期
每天一次,并将每天同步的数据在hive中创建一个分区(按日期进行分区)--每日订单等数据
次日凌晨00:30(保证用户行为数据已经采集到hdfs)同步前一天的数据
(2)同步策略-取决于数据量(大/小)
全量同步
增量同步
新增和变化同步(两个字段)
(3)保存周期
数仓中的数据有半年的回溯周期
4、数仓中表的分类☆
事实表:记录发生的事实,参考3W原则,对事实进行描述。记录who ,where, when,do
维度表:描述事实中的一部分
事务型事实表:事实一旦发生不会改变,表中记录只包含新增操作
周期型事实表:记录这个事实在某个时间周期内最终的状态,只重视结果
累计型快照事实表:记录整个事实在某个时间周期内的累积的变化状态!重视过程
5、表的分层
ODS:按日期分区
DWD:对ODS进行ETL后的明细,按日期分区
DWS:数据服务层,分区表,轻度聚合,每天一个分区
DWT:数据主题层,所有此主题的汇总数据,普通表
ADS:数据应用层,普通表
6、数仓中各层的建模
ODS:保持原貌,不做修改
DWD:ETL(清洗),轻度聚合,展开明细【对维度表组合,实现降维操作】
DWS:分主题建宽表
DWT:分主题建宽表
ADS:根据需求建模
三、安装hive2.3
1、安装
配置环境变量/etc/profile的HIVE_HOME
配置hive-site.xml、拷贝MySQL的驱动
2、使用
启动Metastore:hive --service metastore &
3、JDBC方式连接
配置jdbc-site.xml和hdfs-site.xml
分发重启开启服务hiveserver2
配置hive的tez引擎
四、ODS层
1、数据准备
(1)造log数据
调整集群时间- dt.sh 最早 的日期
启动采集通道 onekeyboot.sh start
调用造数据的脚本 lg 200 300
去hdfs上查看,并继续修改时间重复操作
(2)造db数据
执行造数据的程序java -jar gmall-mock-db-2020-03-16-SNAPSHOT.jar
执行sqoop导入脚本mysql_to_hdfs.sh 是否第一次导入 日期
2、导入数据到ODS层
导入log数据:hdfs_to_ods_log.sh 日期
导入db数据:hdfs_to_ods_db.sh first|all 日期
五、DWD层
1、向DWD层导入log数据
(1)dwd_dim_sku_info
(2)dwd_dim_coupon_info
(3)dwd_dim_activity_info
(4)dwd_dim_base_province
insert overwrite TABLE dwd_dim_base_province
SELECT
bp.id, bp.name province_name, bp.area_code,
bp.iso_code, bp.region_id, br.region_name
FROM
ods_base_province bp left join ods_base_region br
on bp.region_id=br.id
(5)dwd_dim_date_info
(6)维度表总结
将同一类型的多个维度表进行维度退化,退化到一张表中
(7)dwd_fact_order_detail订单明细事实表
(8)dwd_fact_payment_info 支付事实表
(9)dwd_fact_order_refund_info 退款事实表
(10)dwd_fact_comment_info 评价事实表
(11)事务型事实表:取ODS层当日新增数据
(12)周期型快照事实表:每日全量
(13)dwd_fact_cart_info 加购物车表
(14)dwd_fact_favor_info 收藏表
(15)累积型快照事实表:按照统计的事实的生命周期的起始时间作为分区字段
(16)dwd_fact_coupon_use
(17)dwd_fact_order_info
(18)DWD层SQL导入总结
①知道来龙去脉
来龙: 需要从哪些ODS层表中导入数据!
维度表: 找和此维度相关的ods层表!
事实表: 按照星型模型,基于3w原则进行建模,选择需要的字段!
事实表+N个维度表
重点: ODS层这些表的数据,是怎么同步的!
ODS层表的数据,是每日全量?还是每日增量?还是每日新增和变化?
去脉: dwd层所建的表是一种什么样类型的表!
维度表: 从ods层多表join,取字段
事实表: 事务型事实表: 从每日增量的事实表中取数据,join 部分维度表取出维度字段即可!
周期型快照事实表: ODS是全量同步,直接从ODS层原封不动导入即可!
ODS层是增量同步,将ODS所有分区的数据汇总,按照user_id,sku_id进行汇总和去重,统计出要统计数据的最新状态!
累积型快照事实表: ①先查老的要覆盖的分区的数据
②查询新导入的新增和变化的数据
③新老交替,以新换旧
④插入覆盖分区
②思考业务流程
a)考虑 join的方式
b)选择何种函数
c) join表之间的粒度
(19)用户维度表(拉链表)
使用一张全量表(不是分区表)来存储全部的用户信息,以及用户信息的生命周期
如何链条化记录数据的特征变化?
答:为数据提供start_time,end_time
【企业流行新数仓】Day01:新版本对比、业务和表的介绍☆、Hive、ODS层、DWD层的更多相关文章
- 数仓day01
1. 该项目适用哪些行业? 主营业务在线上进行的一些公司,比如外卖公司,各类app(比如:下厨房,头条,安居客,斗鱼,每日优鲜,淘宝网等等) 这类公司通常要针对用户的线上访问行为.消费行为.业务操作行 ...
- HAWQ取代传统数仓实践(十三)——事实表技术之周期快照
一.周期快照简介 周期快照事实表中的每行汇总了发生在某一标准周期,如一天.一周或一月的多个度量.其粒度是周期性的时间段,而不是单个事务.周期快照事实表通常包含许多数据的总计,因为任何与事实表时间范围一 ...
- HAWQ取代传统数仓实践(十)——维度表技术之杂项维度
一.什么是杂项维度 简单地说,杂项维度就是一种包含的数据具有很少可能值的维度.事务型商业过程通常产生一系列混杂的.低基数的标志位或状态信息.与其为每个标志或属性定义不同的维度,不如建立单独的将不同维度 ...
- HAWQ取代传统数仓实践(十一)——维度表技术之维度合并
有一种合并维度的情况,就是本来属性相同的维度,因为某种原因被设计成重复的维度属性.例如,在销售订单示例中,随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中.客户维度的客户地址相关信息 ...
- HAWQ取代传统数仓实践(八)——维度表技术之角色扮演维度
单个物理维度可以被事实表多次引用,每个引用连接逻辑上存在差异的角色维度.例如,事实表可以有多个日期,每个日期通过外键引用不同的日期维度,原则上每个外键表示不同的日期维度视图,这样引用具有不同的含义.这 ...
- HAWQ取代传统数仓实践(七)——维度表技术之维度子集
有些需求不需要最细节的数据.例如更想要某个月的销售汇总,而不是某天的数据.再比如相对于全部的销售数据,可能对某些特定状态的数据更感兴趣等.此时事实数据需要关联到特定的维度,这些特定维度包含在从细节维度 ...
- HAWQ取代传统数仓实践(十七)——事实表技术之累积度量
累积度量指的是聚合从序列内第一个元素到当前元素的数据,例如统计从每年的一月到当前月份的累积销售额.本篇说明如何在销售订单示例中实现累积月销售数量和金额,并对数据仓库模式.初始装载.定期装载做相应地修改 ...
- HAWQ取代传统数仓实践(九)——维度表技术之退化维度
退化维度技术减少维度的数量,简化维度数据仓库模式.简单的模式比复杂的更容易理解,也有更好的查询性能. 有时,维度表中除了业务主键外没有其它内容.例如,在本销售订单示例中,订单维度表除了订 ...
- 看SparkSql如何支撑企业数仓
企业级数仓架构设计与选型的时候需要从开发的便利性.生态.解耦程度.性能. 安全这几个纬度思考.本文作者:惊帆 来自于数据平台 EMR 团队 前言 Apache Hive 经过多年的发展,目前基本已经成 ...
- 数仓建设 | ODS、DWD、DWM等理论实战(好文收藏)
本文目录: 一.数据流向 二.应用示例 三.何为数仓DW 四.为何要分层 五.数据分层 六.数据集市 七.问题总结 导读 数仓在建设过程中,对数据的组织管理上,不仅要根据业务进行纵向的主题域划分,还需 ...
随机推荐
- Kubernetes实践技巧:资源预留
ubernetes 的节点可以按照节点的资源容量进行调度,默认情况下 Pod 能够使用节点全部可用容量.这样就会造成一个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护 ...
- 通俗易懂理解 MySQL B+树、数据存储、索引等知识
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485630&idx=1&sn=681c9c0d ...
- 图解 Kubernetes Ingress
文章转载自:https://www.qikqiak.com/post/visually-explained-k8s-ingress/ 原文链接: https://codeburst.io/kubern ...
- Elastic:Sense chrome - 在 chrome 浏览器中操作 Elasticsearch 的插件
文章转载自:https://elasticstack.blog.csdn.net/article/details/114533904 Sense 是我们现在所说的 Kibana 控制台 UI 的第一个 ...
- 工业互联网领域的企业,都已经接入了ERP或者MES系统了吗?
肯定不是得啊!之前的两化,后来的企业上云,到当下的智能制造.数字化转型,不都是想把制造业(也就是你说的工业互联网企业)往这个方向推么,ERP和MES是企业数字化的一部分,但不是全部,当然有的企业(小工 ...
- 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
1. 问题:怎么给线上表加字段? 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段. CREATE TABLE `user` ( `id ...
- Java学习之路:运算符
2022-10-10 10:34:08 1 运算符 算术运算符:+, -, *, /, %, ++, -- 赋值运算符:= 关系运算符:>, <, >=, <=, ==, != ...
- 【SDOI2013】 项链 题解
Solution 将原问题分为两个问题求解. Part 1 首先求珍珠的种类数. 设\(f_i\)表示满足\(gcd = i\)的本质不同珍珠个数, \(g_i\)表示满足\(gcd\)为\(i\)的 ...
- 2.MongoDB系列之创建更新删除文档
1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('b ...
- MPI实现并行奇偶排序
奇偶排序 odd-even-sort, using MPI 代码在 https://github.com/thkkk/odd-even-sort 使用 MPI 实现奇偶排序算法, 并且 MPI 进程 ...