大数据(0b)离线数据仓库

news/2024/11/24 16:50:40/

文章目录

  • 1、数据库 & 数据仓库
  • 2、OLTP & OLAP
  • 3、范式理论
  • 4、维度表 & 事实表
    • 4.1、维度表
    • 4.2、事实表
  • 5、星型模型、雪花模型、星座模型
  • 6、数仓分层
    • 6.1、命名规范
    • 6.2、合并维度表 and 维度缩减(ODS=>DIM)
    • 6.3、数据处理(ODS=>DWD)
    • 6.4、维度建模(ODS+DIM=>DWD)
    • 6.5、指标(DWD=>DWS=>ADS)
  • 7、数据同步策略
  • 8、示例表

1、数据库 & 数据仓库

中文名英文名说明
数据库Database按照数据结构来组织、存储和管理数据的仓库
数据仓库Data Warehouse为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合

数据仓库不是数据的终点,而是为数据的终点做准备

  • 离线计算:延时的、周期性的、批处理的、海量的 数据计算
    通常,离线计算周期是1天,就是每天批处理前1天的数据,俗称T+1
  • 离线数仓:基于离线计算的数据仓库
    目前 主流的 主要的 离线数仓工具 是 HIVE

2、OLTP & OLAP

在线数据处理分类联机事务处理联机分析处理
英文简称OLTPOLAP
英文全称Online Transaction ProcessingOnline Analytical Processing
数据规模
延时
数据修改灵活不灵活,批量操作为主
数据表征最新数据状态随时间变化的历史状态
应用事务处理数据分析
场景用户注册、商品交易、商品评价商品销量、销售额、退单数、退单率…

3、范式理论

范式
构造 关系数据库遵循的规则
优点
降低数据的 冗余性
保证数据 一致性(数据修改时,改一个表就行,不用改多个)
缺点
需要 join拼接数据,效率降低

4、维度表 & 事实表

维度表事实表
行数较少,列数较多行数较多,列数较少
内容相对固定每天很多新增

4.1、维度表

  • 一般是对事实的描述信息,例如:用户、商品、日期、地区…
  • 行数较少,列数较多
  • 内容相对固定(编码表)

日期维度

用户维度(拉链表)
从拉链表取出快照

4.2、事实表

  • 每行数据代表一个业务事件,通常有很多外键(地区、用户、时间…)
  • 业务事件可以是:下单、支付、退款、评价…
  • 业务事件有数字度量,如:数量、金额、次数…
  • 行数较多,列数较少
  • 每天很多新增
分类说明特点场景
事务型事实表以每个事务为单位数据只追加不修改一个订单支付
一笔订单退款
周期型快照事实表保留固定时间间隔的数据不会保留所有数据点赞数
累积型快照事实表跟踪业务事实的变化数据会修改订单状态
数字度量说明示例示例说明
可加事实各个纬度可以相加销售额既可按日期相加,也可按地区相加
半可加事实部分维度可以相加库存不可按日期相加,可按地区相加
不可加事实各个维度不可相加比例

5、星型模型、雪花模型、星座模型

星型模型

适用于简单业务

雪花模型

和星型模型相比,查询更慢,冗余更低,拓展性更好

星座模型

存在共享维度

建议使用:星座模型+雪花模型

6、数仓分层

分层全称译名说明压缩列式存储分区
1ODSOperation Data Store原始层原始数据
2DIMDimension维度层合并维度表
3DWDData Warehouse Detail明细层数据处理、维度建模
4DWSData Warehouse Service服务层去主键聚合,得到原子指标
5DWTData Warehouse Topic主题层存放主题对象的累积行为
6ADSApplication Data Store应用层具体业务指标
HIVE
维度退化
数据处理
维度建模
聚合
累积
计算指标
HDFS
ODS
DIM
ADS
DWD
DWS
DWT
  • 分层的好处
    复杂问题拆解为多层
    减少重复开发(可以去中间层取数,不用每次都去原始层)
    隔离原始数据,例如:异常数据、敏感数据(用户电话…)
  • 数据存储策略
    原始层保持数据原貌,不进行脱敏和清洗
    创建分区表(例如:日期分区),防止全表扫描
    数据压缩,减少磁盘占用(如:LZOgzipsnappy
    列式存储提高查询效率(如:ParquetORC

6.1、命名规范

库名:业务大类
表名:分层名_业务细类
临时表:temp_表名
备份表:bak_表名
视图:view_表名(场景:不共享的维度表、即席查询)

分层命名规范说明
ODSods+源类型+源表名+full/ifull:全量同步
i:增量同步
ods_postgresql_sku_full
ods_mysql_order_detail_i
ods_frontend_log
DIMdim+维度+full/zipfull:全量表
zip:拉链表
日期维度表没有后缀
dim_sku_full
dim_user_zip
dim_date
DWDdwd+事实+full/ifull:全量事实
i:增量事实
DWSdws+原子指标时间粒度有1d1h
1d:按1天
1h:按1小时
dws_page_visitor_1d
DWTdwt_消费者画像
ADSads+衍生指标/派生指标

6.2、合并维度表 and 维度缩减(ODS=>DIM)

合并维度表

维度缩减
情况1:字段很少的维度表 合并到事实表
情况2:非公共的维度表(该维度表只用在一个事实表)合并到事实表

6.3、数据处理(ODS=>DWD)

处理方式说明
JSON 解析{'A': {'a': 3, 'b': 4, 'c': 6}}=>{'Aa': 3, 'Ab': 4, 'Ac': 6}
字段统一student_idStudentId统一成student_id
单位统一2万元 => 20000元
名称统一西红柿 => 番茄
番茄 => 番茄
tomato => 番茄
枚举转换0 => 男
1 => 女
脱敏电话:188xxxxxx79
去重去除重复数据(避免笛卡尔乘积)
过滤清除无效数据

6.4、维度建模(ODS+DIM=>DWD)

  1. 选择业务过程,例如:用户、商品、订单、优惠券、评价…
  2. 声明粒度,例如:订单表的1行数据 代表了1次下单行为
  3. 确度维度:时间维度、地区维度、商品维度、用户维度、优惠券维度…
  4. 确定事实:点击、下单、支付、退款、评价…
  5. 度量值:次数、金额、个数…
  6. 构建 事实 × ( 维度 + 度量值 ) 事实 \times (维度+度量值) 事实×(维度+度量值)矩阵
事实\维度时间地区用户商品优惠券度量值
子订单11111个数、金额
退款1111次数、金额
评价1111次数

6.5、指标(DWD=>DWS=>ADS)

  • 原子指标:业务定义中 不可拆解的指标
    由DWD层聚合而来,存储到DWS层
原子指标业务过程度量值聚合逻辑
订单数订单order_idcount
订单金额订单order_amountsum
页面浏览量页面浏览page_idcount
每日 独立访客数页面浏览user_idcount(distinct)
每月 独立访客数页面浏览user_idcount(distinct)
  • 派生指标:对 原子指标 进一步 聚合和筛选
    由DWS层聚合而来,可存储到DWT层或ADS层
指标类型原子指标统计粒度(group by)业务限定(where)
各省份 每天 手机类目 下单金额下单金额天、省份手机类目
每月 各页面 流量页面浏览量月、页面
  • 衍生指标:多个派生指标 复合运算而成,例如:比率
    当天退单率 = 当天退单数 / 当天订单结束数 当天退单率=当天退单数/当天订单结束数 当天退单率=当天退单数/当天订单结束数
    下单率 = 下单人数 / U V 下单率=下单人数/UV 下单率=下单人数/UV
    存储到ADS层

  • 画像:对维度表的字段进行分组COUNT得到的统计值,并没有事实表参与
    例如:用户画像、商品画像
    统计值例如:对用户维度表COUNT(性别)得到男生人数和女生人数
    这种统计值通常不完全可加的,例如昨天的男生人数不能和前天的男生人数相加
    而每天算一次就可得到时间序列,例如男生人数按天统计的时间序列

7、数据同步策略

同步策略周期读数方式写入方式适用场景示例
同步1次全量覆盖写入源不变日期表
全量同步每天全量覆盖写入日期分区源量小,有增改品牌表
增量同步每天按日期新增覆盖写入日期分区源增量大子订单表
增量变化同步每天按日期增量和变化覆盖写入日期分区源量大,有新改父订单表、用户表
示例表类型源量是否允许
update
是否允许
delete
同步策略
&增量标识
同步周期
&分区
商品信息维度表全量按天
用户信息维度表创建时间和更新时间按天
子订单流水事务型事实表创建时间按天
商品收藏周期型快照事实表全量按天
订单状态累积型快照事实表创建时间和更新时间按天

8、示例表


http://www.ppmy.cn/news/722773.html

相关文章

【NVMe2.0b 14-8】Set Features(下篇)

Set Features 5.27.1.13Host Controlled Thermal Management (Feature Identifier 10h), (可选)5.27.1.14Non-Operational Power State Config (Feature Identifier 11h), (可选)5.27.1.15Read Recovery Level Config (Feature Identifier 12h)5.27.1.16Predictable Latency Mo…

【NVMe2.0b 13】NVMe 标准数据结构

NVMe 标准数据结构 4数据结构4.1数据布局4.1.1Physical Region Page Entry and List4.1.2Scatter Gather List (SGL)4.1.2.1SGL示例 4.1.3Metadata Region (MR) 4.2Feature值4.3Identifier的格式与布局4.3.1PCI Vendor ID (VID) 和 PCI Subsystem Vendor ID (SSVID)4.3.2Serial…

【NVMe2.0b 9】控制器初始化过程

控制器初始化过程 3.5控制器初始化3.5.1基于内存传输的控制器初始化3.5.2基于消息传输的控制器初始化3.5.3Controller Ready Modes During Initialization3.5.4初始化过程中的Controller Ready Timeouts3.5.4.1Handling Errors During Initialization 3.5控制器初始化 本节介绍…

a + b + c = 0 ?

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 给定数组 nums [-1, 0, 1, 2, -1,…

【NVMe2.0b 15】NVMe SR-IOV

NVMe SR-IOV PCIe SR-IOV 系列导航基于 PCIe 的 NVM transport 实施结构关键词定义支持 SR-IOV 的 NVM Subsystem 结构Virtualization EnhancementsVQ Resource 定义VI Resource 定义Secondary Controller 状态与资源配置Single Root I/O Virtualization and Sharing (SR-IOV) …

0 、 '0' 、 0 、 ’\0’ 区别

转载自:https://blog.csdn.net/qnavy123/article/details/93901631 ① ‘0’ 代表 字符0 ,对应ASCII码值为 0x30 (也就是十进制 48) ② ‘\0’ 代表 空字符(转义字符)【输出为空】 ,对应ASCII码值为 0x00(也就是十进制 0), …

Python进制转换后去掉“0b“,“0x“,“0o“

Python在进制转换之后会带上“0b”、“0x”、“0o”的进制转换符,而在具体使用过程中,很多时候我们又并不希望输出的结果带上进制前缀,因此就需要方法去除进制前缀,可以通过以下两种方式解决: 使用截取字符串的方法&a…

Python - 0b、0o、0x

a 0b010 b 0o010 c 0x010 print(type(a),a) print(type(b),b) print(type(c),c) #------------- print(0b010&0b111) print(0b001|0b010) print(0b010^0b100) print(~0b001) #原码->补码->求原码(原码的值+符号位即为最后的真值&#xf…