传统数据存储的缺点:
生活中的数据来源可以是
- 小程序
- APP
- 网站
- 日志
- 物联网loT
- 隐藏行为
- ......
1、存储方式比较单一。
2、不方便统一管理。
3、不方便同一分析。
4、如果是关系型的数据,表比较单一和少。
5、挖掘数据的假肢难度加大,无法充分挖掘数据价值。
大致工作流程
- 数据存储
- excel表格存储
- mysql存储
- 本地文件夹
- 数据分析
- 人工对账分析
- Excel表格分析
- mysql数据库相关分析
- 数据应用
- 出表格
- 画图(柱状图,折线图,饼状图...)
数据仓库
大致理解
- 数据会被离线或者实时采集到数据仓库中ODS层内进行存储
- 理论上来说,数据怎么产生,就怎么采集到ODS层中,即便存在乱码或脏数据,尽量保留原始数据状态的原则。
- 但是有时候在做数字化转型的时候,采集数据的时候,会稍微的做一些数据清洗,数据替换等工作
- 近几年大部分企业在做数据仓库的时候,用的技术是hive。
- 采集的工具:
- flume采集
- sqoop数据同步,底层是基于MR(停止使用)
- dataX (离线同步)
- chunjun(flinkX)(实时同步)
- SeaTunnel数据同步平台(flink,spark,自带的)
数据仓库的特点
面向主题
主题是一个抽象概念, 简单的说就是与业务 相关的数据类别,每个主题基本对应一个宏观的分析领域
集成
与面向主题密切相关,将多个分散的数据源统一成一致的、无歧义的数据个时候,在放到数据仓库中,比如产品名冲突,单位不一致问题, 完成诸如此类整合后该 数据仓库可称为集成的
随时间变化
数据仓库中的数据反映了某一历史时间点的数据快照,但一般数据仓库不是永久存储而是存在生命周期
非易失
数据一旦进入数据仓库, 数据就不应该再有改变。 操作型环境中的数据一 般都会频繁的更新,而 在数据仓库环境中一般 不进行数据更新,当改 变的操作性数据进入数 据仓库时会产生新的记 录,这样就保留了数据 变化的历史轨迹
数据仓库的业务痛点:
- 数据资产模糊
- 无法 应对频繁临时需求
- 数据质量低
- 问题难定位,周期长
- 重复建设
- 代码耦合性高
星型模型
- 非正规化
- 不存在渐变维度
- 有冗余数据
- 查询效率可能会比较高
- 不用过多考虑正规化因素,设计维护较为简单
雪花模型
- 正规化
- 数据冗余少
- 有些数据需要连接才能获取,可能效率较低
- 规范化操作较复杂,导致设计及后期维护复杂
- 实际应用中,可以采取星型和雪花两种模型的混合体
维表的设计方法
- 选择维度
- 作为维度建模的核心, 需保证企业级数据仓库维度唯一性
- 维度一般作为查询的约束条件、分组、排序关键属性,所以可以从需求出发来选择维度
- 确定主维表
- 主维表一般是直接从业务系统同步而来,它是分析事实中所需要环境描述 的最基础、最频繁的维度属性集合
- 比如:用户维度从业务系统用户信息表中直接抽取
- 梳理维度关系
- 确定哪些表与主维表存在关联关系,并选择其中某些表用于生成维度属性
- 梳理主维表与其他维 表关系,如一对多、 多对一、一对一等关系
- 定义维度属性
- 从主维表或者相关联维表中选择维度属性或生成维度属性
- 维护描述属性与其他维度关联关系字段
事实表设计原则
- 事务事实表:描述业务过程,跟踪空间或时间上某点的度量事件保存的是最原子的数据,如:下单流水、支付流水等
- 周期快照事实表:具有规律性的、可预见的时间间隔产生快照每行代表某个时间周期的一个实体,如:库存快照表
- 累计快照事实表:描述业务过程,跟踪空间或时间上某点的度量事件保存 的是最原子的数据,如:交易全流程事实表
-
设计原则
事实完整性、粒度一致性、事实可加性、维度退化、事实易用性、单位统一、业务相关、空值处理
事实表设计流程
设计步骤:
- 选择业务
- 声明粒度
- 确定维度
- 确定事实
- 冗余维度
一般数仓模型数据调用需遵循以下几点:
- 禁止逆向调用
- 避免同层调用
- 优先使用公共层
- 避免跨层调用
Onedata数据模型
指标体系生成
原子指标+统计周期+统计粒度+业务限定=派生指标
数据获取和采集
数据采集流程和同步场景
-
方案1:适用于小数据量或者没有增量标记的表
全量同步->当天数据全量抽取->插入全量表当天全量分区
-
方案2:适用日志,流水类数据
增量同步->当天数据增量抽取->插入增量表当天增量分区
-
方案三:通用方案,一般都采用此场景
增量同步->插入增量表当天增量分区+全量表T-1全量分区->插入全量表当天全量分区
数据加工和清洗
概述
- 不完整数据、错误数据、冗余数据
- 元数据不一致、数据缺失、数据错误、数据冗余、数据合并
- 原则:能使用SQL的情形下,尽量使用SQL
元数据不一致
- 常用方法:定义标准元数据,创建Map表或者定义转换规则,清洗数据
数据缺失
- 常用方法:1-填充固定值;2-填充统计值;3-填充拟合值
数据错误
- 常用方法: 根据实际问题分析
- 格式错误: 隐式转换和显式转换;定义成String型,通过SQL进行预检查
- 取值异常: 根据业务规则进行约束检查,根据统计信息判断是否异常
- 对象相同,记录不同:确认不同数据来源的可信度,横向对比,根据其他对象信息判断,纵向对比,结合该对象其他信息判断。