数仓学习笔记(3)——数仓建模理论
目录
一、数仓分层
1、 为什么要分层
2、数据集市和数据仓库概念
3、数仓命名规范
3.1 表命名
3.2 脚本命名
3.3 表字段类型
二、数仓理论
1、范式理论
1.1 范式概念
1.2 函数依赖
1.3 三范式区分
2、关系建模与维度建模
2.1 关系建模
2.2 维度建模
3、维度表和事实表
3.1 维度表
3.2 事实表
4、维度模型分类
5、数据仓库建模
5.1 ODS层
5.2 DIM层和DWD层
5.3 DWS层与DWT层
5.4 ADS层
三、数仓环境搭建
1、Hive环境搭建
1.1 Hive
1.2 Hive on Spark
1.3 Hive on Spark
2、Yarn配置
2.1 增加ApplicationMaster资源比例
3、数仓开发环境
4、数据准备
一、数仓分层
1、 为什么要分层
2、数据集市和数据仓库概念
3、数仓命名规范
3.1 表命名
- ODS层命名为ods_表名
- DIM层命名为dim_表名
- DWD层命名为dwd_表名
- DWS层命名为dws_表名
- DWT层命名为dwt_表名
- ADS层命名为ads_表名
- 临时表命名为tmp_表名
3.2 脚本命名
- 数据源_to_目标_db/log.sh
- 用户行为脚本以log为后缀;业务数据脚本以db为后缀。
3.3 表字段类型
- 数量类型为bigint
- 金额类型为decimal(16, 2),表示:16位有效数字,其中小数部分2位
- 字符串(名字,描述信息等)类型为string
- 主键外键类型为string
- 时间戳类型为bigint
二、数仓理论
1、范式理论
1.1 范式概念
1.2 函数依赖
1.3 三范式区分
第一范式:
第二范式:
这里的部份依赖是和主键有关,再拆分成两张表的时候,不仅把部分依赖消除了,同时也消除了部分数据冗余
第三范式:
2、关系建模与维度建模
关系建模和维度建模是两种数据仓库的建模技术。关系建模由Bill Inmon所倡导,维度建模由Ralph Kimball所倡导。
2.1 关系建模
2.2 维度建模
3、维度表和事实表
3.1 维度表
维度表:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。
3.2 事实表
事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。“事实”这个术语表示的是业务事件的度量值(可统计次数、个数、金额等),例如,2020年5月21日,宋宋老师在京东花了250块钱买了一瓶海狗人参丸。维度表:时间、用户、商品、商家。事实表:250块钱、一瓶
每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键,通常具有两个和两个以上的外键。
事实表的特征:
- 非常的大
- 内容相对的窄:列数较少(主要是外键id和度量值)
- 经常发生变化,每天会新增加很多。
4、维度模型分类
在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。
5、数据仓库建模
5.1 ODS层
5.2 DIM层和DWD层
5.3 DWS层与DWT层
5.4 ADS层
对电商系统各大主题指标分别进行分析。
三、数仓环境搭建
1、Hive环境搭建
1.1 Hive
Hive引擎包括:默认MR、tez、spark
Hive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。
Spark on Hive : Hive只作为存储元数据,Spark负责SQL解析优化,语法是Spark SQL语法,Spark负责采用RDD执行。
1.2 Hive on Spark
1.3 Hive on Spark
2、Yarn配置
2.1 增加ApplicationMaster资源比例
3、数仓开发环境
数仓开发工具可选用DBeaver或者DataGrip。两者都需要用到JDBC协议连接到Hive,故需要启动HiveServer2。
4、数据准备
数仓学习笔记(3)——数仓建模理论相关推荐
- 数仓学习笔记(5)——数仓搭建(DWD层)
目录 一.数仓搭建--DWD层 1.DWD层(用户行为日志) 1.1 日志解析思路 1.2 get_json_object函数使用 1.3 启动日志表 1.4 页面日志表 1.5 动作日志表 1.6 ...
- 数仓学习笔记(4)——数仓搭建(ODS层和DIM层)
目录 一.数仓搭建-ODS层 1.ODS层(用户行为数据) 1.1 创建日志表ods_log 1.2 Shell中单引号和双引号区别 1.3 ODS层日志表加载数据脚本 2.ODS层(业务数据) 二. ...
- 数通学习笔记1 - 数据通信网络基础
数通学习笔记1 - 数据通信网络基础 数据通信网络基础 数通学习笔记1 - 数据通信网络基础 前言 一.通信与网络 1. 什么是通信.什么是网络通信? 2. 信息传递过程 3. 数据通信网络 二.网络 ...
- python反转一个三位数的整数_Python学习笔记3-整数反转
Python学习笔记3-整数反转 题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: - ...
- 嵌入式系统设计师学习笔记①:数的进制转换
嵌入式系统设计师学习笔记:数的转换 进位计数制系统的基本概念:数制,基数,数码,数位,位权 制作了个表格如下: 在十六进制中:A-10,B-11,C-12,D-13,E-14,F-15. 举例各种进制 ...
- DMU-参数介绍-学习笔记1
DMU软件介绍 DMU是一个数量遗传学工具包,主要功能包括估计方差组分和固定效应,预测育种值.DMU的开发历史可以追溯到25年前,大部分功能基于数量遗传学研究的需求而开发.在丹麦动物育种研究中,DMU ...
- 【数据库学习笔记】Day06 - 关系数据库规范化理论
[数据库学习笔记]Day06 - 关系数据库规范化理论 目录 一.关系数据库中存在的数据冗余问题 二.函数依赖 三.关系规范化 一.关系数据库中存在的数据冗余问题: 以学生信息表为例: 该关系模式存在 ...
- 数分学习笔记 vol.1 <游戏数分基本工作内容>
写作目的 快要脱离学生身份了,但为了在未来的工作中不被淘汰,个人认为继续学习是必须的.因此写下了这个博客,希望自己能在工作中不断积累,总结经验,不断提升. 所有内容仅代表个人的想法和感悟,如有不同意见 ...
- C语言学习笔记08-函数、变量作用域{}
C语言自定义函数 函数 / 方法(面向对象语言),将功能重复的代码段(原始的方式是cv)提取抽象出main方法外,将其放入一个新的函数中,从而在main中只需要调用该函数就可完成一项复杂的工作,代码会 ...
最新文章
- Java比较数量怎么比较_java - 如何在Java数量比较字符 - SO中文参考 - www.soinside.com...
- 表面缺陷检测数据集汇总及其相关项目推荐
- BCH正式升级,智能合约,逐梦而来!
- Replication--镜像+复制
- python读取txt文件并画图
- 斯特林公式(Stirling's approximation)
- android 阻尼动画,Android拉伸阻尼效果实现
- macOS Big Sur正式版发布!Big Sur安装失败?更新时卡住了怎么办?
- echarts中国地图3D各个城市标点demo
- ES11新特性_可选链操作符---JavaScript_ECMAScript_ES6-ES11新特性工作笔记064
- python数据结构与算法知识点_数据结构和算法基础知识点(示例代码)
- 高等代数第3版下 [丘维声 著] 2015年版_2020年成人高考 专升本 高等数学复习攻略...
- vfp保存为html,vfp向HTTP发送文件
- 团队成员筛选的核心秘档:三否三拒三不动
- gentoo php,Gentoo 下安装 PHP 扩展
- IOS UIView详解
- OpenInfra Days China 2020大会议程已上线,快来报名参加!
- CentOS7使用yum安装MySQL——指定版本
- sqli-labs11-22关闯关心得与思路
- 使用git log统计代码行数