数据仓库(Data WareHouse)
数仓是什么?
- 面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程
- 浓缩才是精华
- 数据仓库是数据集合,里面的数据被用来决策分析
为什么要有数仓?
OLTP(Online Transaction Processing)
- 是指在线事务处理系统,主要用于支持企业的日常业务操作和交易处理
- 数据量较小
- 读写频率低,查询频率高
- 通常是基于关系型数据库建立的
OLAP(Online Analytical Processing)
- 是指在线分析处理系统,主要用于分析大量的历史数据以支持决策制定
- 数据量很大
- 通常是基于大数据仓库(Hive、Hbase)建立的
- 查询频率不高,但是可能会一条SQL执行很久
为什么不直接在业务系统库里进行分析?
- 通常事务处理的优先级比分析系统高,都运行在同一硬件之上,分析系统性能很差
- 业务系统的列名通常是硬编码,有时是无意义的字符串,很难分析
- 业务系统的版本变更频繁,提取数据需求难,每次变更,分析看板字段要重新测试
- 有误用业务数据的风险
好处是什么?
- 分析性能好
- 字段明确
- 提数据需求简单
- 字段稳定
- 数据查询&读写分离
数仓的数据哪里来?
业务系统数据
- ERP
- 企业资源规划
- 财务
- 采购
- 库存
- 销售
- 生产
- CRM
- 客户关系管理系统
- 用于管理客户数据库
- SCM
- 供应链管理系统
- 用于协调和管理供应商、制造商、分销商等各方
- 确保产品和服务按时交付
- MES
- 生产执行系统
- 帮助企业减少生产时间和成本
- QMS
- 质量管理系统
- 用于管理产品和服务的质量
埋点日志
.txt
- 表示文本格式的日志文件
.log
- 最常见的日志文件后缀名,通常表示文本格式的日志文件,可以使用任何文本编辑器打开
.xml
- 通常用于系统日志、应用程序日志等
- 可以使用XML解析器来解析这些日志数据
- 举例:
xml示例.xml
.json
- 类似于Python的字典
.csv
- 逗号分隔符
.log.gz
- 日志文件压缩
- 通常使用gzip压缩
外部数据
- API
- 爬虫数据
数据到哪里去?
- BI系统
- 全量
- 切片
- 代码
数仓架构设计
- RDS = ODS(原始数据储存)
- 用于存储:不经过任何处理存储的原始数据
- TDS(转化后的数据存储)
- 用于存储:经过了ETL工程后的数据
- ETL流程
- E - Extract 抽取
- T - Transform 转换
- L - Load 载入
- 自动化调度
- 定时定点的重复运行ETL过程
- Windows的任务计划程序
- Linux的Crontab
ETL是什么?
数据抽取
全量
- 数据库初始化的时候一定使用全量同步
增量
- 时间戳
- 筛选时间
where 更新日期 = cast(left(now(), 15) as date