DWH基础知识梳理
前排提醒
这是我根据个人理解整理的DWH课程主要框架和知识,如有错误可邮件叫我更正。
本课程为英文授课,此处用中文梳理知识点,如有翻译理解问题多多包涵。
数据仓库和商业智能
简介
本课程由荷兰方提斯大学的Gleb Popov授课。
数据仓库和商业智能是携手并进的。数据仓库不只是存储数据使用,与其存起来不如让它们变得更有用。
商业智能指的是将这些数据转化为实时变化的见解,从而让它可以帮助决策的过程和工具。
而数据仓库是这些过程的其中一部分,是技术和组件的混合体。
商业智能项目需求
当商业遇上数据
如何跟上时代?
- IT商业分析师(主要)
- 全面理解商业,有一定信息技术知识。指定关键绩效指标(KPI),而且可以将其应用到数据上。
- 数据可视化工程师
- 可以在没有编程基础的情况下搭建用户想要的数据展示屏。
- 数据科学家
- 喜欢用Python/R/SQL做好玩的东西,但倾向于不在结构上处理原始数据。
- 懂得数学和统计学。
- 具备任意自然科学或信息技术的学习或工作经历。
- 数据工程师或ETL开发者
- 懂得如何设计和实施给上述人员提供数据的流程。
- 通常具备信息技术的学习或工作经历。
旧体制面临的问题是数据化的开始
“Excel大师”需要维护整套数据,每天工作12个小时,按时获得正确的数据。
另一个部门做着部分相同的工作,不知道有另一个“真理之源”。
当需要额外的洞察力时,就去找IT部门,要求“从你的数据库中再提取一个”。
- 目前的设备与管理体系不具有可扩展性
- 决策过程质量不高
- 由于数据到行动的过程缓慢,运营效率差
数据到行动 (D2A)
系统需求
https://anzai.sleepingbed.top/archives/posts/sds-recap.html#需求收集
开发方法
https://anzai.sleepingbed.top/archives/posts/sds-recap.html#开发方法-Development-Methodologies
实施计划
- 识别商业需求
- 开发逻辑数据模型
- 创建物理数据模型
- 定义ETL过程
- 导入BI工具
数据仓库
一个可供查询和分析的综合信息仓库。
优势
- 数据分析和决策支持的理想环境
- 流畅、灵活、互动
- 100%由用户驱动
- 反应非常迅速,有利于“问-答-问”的模式
- 提供了发现复杂的、不可预知的问题的解决方案的能力
- 使用复制的数据进行分析,重新复制一次,可以进行无限制的分析,并且不干扰在线交易处理(OLTP)系统。
解决方案
组件
ETL
抽取转换加载。
数据暂存
数据源→抽取过的数据→暂存区→数据仓库
数据存储
- 数据组织
- 数据整合
- 数据质量
- 历史数据存储
- 性能优化
元数据
- 关于数据的数据
- 对数据的来源至关重要
- 业务元数据
- 提取和转换元数据
- 终端用户元数据
协调组件
管理控制组件
SQL
基础语法
请自行学习。
文件格式
- CSV
- JSON
- XML
- Avro
- Parquet
数据取样
- 随机取样
- 分层取样
- 系统取样
- 简便取样
暂存区
数据暂存区是一个介于操作系统数据和数据仓库之间的中间存储区。在这个存储区,业务数据被清理并转化为适合放置在数据仓库的形式,以便于检索。
数据库
一个数据库是一个有组织的数据集合。以这样的方式存储数据,可以从中得到有用的信息。
表
联系
需具备以下特征:
- 行包含关于实体(关注的项目)的数据。
- 列包含关于实体的属性的数据。
- 一列中的所有条目都是相同类别的。
- 每一列都有一个唯一的名字。
- 表格中的单元格只容纳一个值。
- 列的顺序是不重要的。
- 行的顺序是不重要的。
- 所有的行都不同。
键
代用键
代用键是人工添加到一个联系中的键,代为主键。
- 由数据库管理系统(DBMS)提供
- 较短、由数字组成、不变的,也就是理想主键应具备的特征
- 虽然是人工添加,但是对用户没有意义
- 通常在表格和报告中隐藏
优势:
- 它可以整合多个数据源系统
- 追踪属性随时间的变化
- 使用代用键来处理一个行的多个版本
- 目前不在范围内
- 保护数据仓库不受操作变化的影响
- 处理NULL或未知条件
- 空行技术
- 处理事实和维度之间不存在联系的情况
- 提高性能
以下名词如无特殊说明都指代用键:
- Meaningless key
- Integer key
- Nonnatural key
- Artificial key
- Synthetic key
外键
表之间的联系可以通过使用外键来设置,即一个表中的字段与另一个表的主键相连。
外键可以是一个单列或一个复合键。
商业键
数据源系统的主键。
以下名词如无特殊说明都指商业键:
- Natural keys
- Production keys
- Operation keys
数据类型
- 数字 (bit, tinyint, int, float, …)
- 字符串 (char, varchar, text, …)
- 财务 (money, smallmoney)
- 日期时间 (datetime, date, time)
- 二进制值
NULL
空值,不等于0。
DDL 和 DML
数据定义语言(DDL)和数据操作语言(DML),前者创建表、联系和其他结构,后者数据查询和修改。
维度建模
专为数据仓库解决方案而优化的数据库设计方法。
它解决了两个重要的需求:
- 以方便理解的格式提供数据
- 提供快速的查询性能
这种方法强调“简单性(Simplicity)”
应有元素
- 事实
- 维度
- 属性
- 星星图
步骤
- 选择商业过程
- 确认颗粒度
- 识别维度
- 识别事实
去正常化 (De-normalization)
- 引入数据冗余
- 最小化分析性查询的查询响应时间
- 结果是简单的连接结构
- 没有数据丢失;只是呈现方式不同
维度表的特别之处
- 常规的规则并不适用
- 没有针对修改数据方面的优化
- 以一致的方式整合多个源数据
- 便于用户阅读
维度表组件
- 代用键
- 自然键
- 属性
- 审计标志
- 时间戳
- ETL IDs
事实和维度的关系
- 关系组件
- 一对多关系
- 一个学生
- 许多学期
- 涉及的键
- 维度的主键
- 事实表的外键
- 正确创建它是很重要的
- 在解决方案中起着重要的作用
- 在该维度的所有数据源中应该是唯一的
时间维度
一个存储时间的表,里面充斥着很大的日期,如10年、30年。
作为一个维度表,它并不大,并且只加载一次,并非周期性加载。
- 几乎存在于所有的数据仓库中
- 有助于在一段指定时间内进行分析
- 包含预先计算好的日期信息
事实表的特征
- 与维度一起使用,用于:
- 报告目标
- 衡量业绩
- 分析时间的趋势
- 包含大量的测量值
- 倾向于增长非常快
- 性能是一个重要的设计因素
事实表的主要元素
- 事实
- 主键
- 外键
发现事实的步骤
- 分析商业过程的重要元素
- 发现一些事实
- 通过颗粒度进行检查
- 再次检查事实
事实的分类
可添加事实
可以从一个事实中总结出所有维度的内容,是最常见的事实类型。
- 售出数量
- 分数
- 击杀数
- 工资
半可添加事实
可以在某些方面进行总结,不能跨越时间进行总结。
不可添加事实
百分比,不能跨越任何维度进行总结。
ETL与数据管道
ETL就像一个数据的黑盒子,指的是抽取转换加载。
加载类型
全部加载/前置加载
第一次用操作系统的数据填充数据仓库的过程。
全部加载,旧数据会丢失,慢,容易操作。
升级加载 (Incremental load)
更新数据仓库的过程,仓库与业务系统的变化。
更新数据,旧数据会被保留,快,不易实施。
ETL工具
构建ETL流程并使之自动化的软件系统,手工创建数据仓库的一个解决方案。
ETL工具应包含:
- 数据流管理
- 与其他系统的连接器
- 数据转换组件
- 日志和审计
- 调试
- 部署
优势:
- 比使用数以百计的脚本更容易
- 图形化,易于解释
- 易于学习和使用
数据管道
数据管道是一系列的流程和组件,它从各种来源收集原始数据,过滤数据,将它们转化为适当的格式,将它们移动到你想存储的地方,分析它们,最后将它们呈现给你的受众。
ETL和数据管道的不同
- ETL是一个从各种来源提取数据的过程,将其转化为适合特定的模式或格式,并将其加载到目标数据库或数据仓库。
- 数据管道是一个更广泛的术语,包含了将数据从源头转移到目的地的整个过程,不仅包括ETL,还包括数据获取、数据处理和数据交付。
- ETL通常涉及数据的批处理,而数据管道可以是批处理,也可以是流处理。
- ETL通常用于集中式环境(即数据仓库),而数据管道更常用于分布式计算环境,如Hadoop或Spark集群。
- ETL一般专注于结构化数据,而数据管道可以处理结构化也可以处理非结构化数据。
获取和提取 (Ingestion and Extraction)
数据获取涉及到从各种输入源收集和传输数据到目标存储,以便进一步处理。
使用“Ingestion”或“Extraction”在很大程度上取决于你工作的背景和环境,所谓的“现代数据栈”使用Ingestion来远离动词“Extract”,因为它与传统的ETL有关。
获取的类型
批处理和数据流(Batch and Streaming)
获取的方式
- 文件基础
- 数据库基础
- API基础
数据映射
在商业智能的背景下,数据映射是定义如何将数据源系统的数据转化并加载到目标系统中的过程,如数据仓库或报告数据库。
阶段
- 从数据源映射到数据仓库的暂存区
- 从暂存数据库映射到准备加载的或目标数据库
- 从逻辑数据模型映射到语义或访问层
映射文档
- 修改日志
- 映射追踪
- 图例
- 所有映射列表
数据映射所需条目(列)
- 主题领域
- 目标表名
- 目标列名
- 数据类型
- 是否为主键
- 是否可为Null
- 数据源系统
- 源表名
- 源列名
- 源列数据类型
- 转换规则
- 转换类别
数据质量
数据质量不仅仅是单个字段,而是整个综合系统的质量。
为什么那么重要?
- 提高决策的信心。
- 能够提供更好的客户服务。
- 有机会提高服务的价值。
- 减少决定的风险。
- 降低成本,特别是营销活动的成本。
- 加强战略决策。
- 通过精简程序提高生产力。
- 避免数据污染的影响。
什么样的数据质量高?
- 精确
- 领域完整
- 采用合适的数据类型
- 格式一致
- 减少冗余
- 高完整性
- 低重复
- 明确的结构
- 无数据异常或多用途字段
- 清晰
- 实用
信息提交
缓慢变化维度 (SCD)
在数据仓库中,直接覆盖维度表的属性并不总是合适的选择。对维度表进行修改的方式取决于修改的类型和数据仓库中必须保留的信息。
四种修改方式
- 保持历史数据
- 覆写
- 版本记录
- 增加新的属性
先进技术
大型维度
大型维度指的是数据仓库中包含大量不同属性值或有大量行的维度表。
快速变化维度
快速变化维度指的是数据仓库中的维度表,这些维度表的属性值会随着时间的推移发生频繁和重大的变化。这些维度捕捉不稳定和快速发展的数据,其中某些属性的值会经常变化并影响历史分析。
垃圾维度 (Junk Dimensions)
垃圾(Junk)维度,也被称为乐色(Garbage)维度或杂项(Miscellaneous)维度,是通过将多个低重要性的属性合并到一个维度表中而创建的维度。
之所以被称为垃圾是因为这些属性不需要单独的维度表,而且与主要事实或其他维度没有直接关系。
映射表
映射表是商业智能解决方案的一个组成部分,它有助于数据转换和不同实体或属性之间的映射。它们作为查找表,为从一个领域到另一个领域的映射值提供集中的参考。
不事实的事实 (Factless facts)
不事实的事实用于捕获没有任何关联度量的事件。它们提供了一种方法来记录维度之间关系的存在,而无需数字测量或指标。
原文:Factless facts are tables in a data warehouse that capture events or occurrences without any associated measures. They provide a means to record the existence of a relationship between dimensions without numerical measurements or metrics.
现代商业智能
面临的挑战
- 获取所有数据
- 我们无法提前预知所有的分析问题,我们需要保留原始数据。
- 数量:具有“大数据”能力
- 能够处理大量的数据。
- 具有可扩展性。
- 有效
- 多样性:支持广泛的分析问题
- 解析:数据可以包含数字、多值标签和文本
- 速度:工作速度足够快
- 托管
- 企业内部
- 云计算
分布式数据也是面临的挑战之一。
一些新技术
略。
现代结构与统一结构
- 标题: DWH基础知识梳理
- 作者: anzai249
- 创建于 : 2023-06-13 18:26:04
- 更新于 : 2023-08-20 22:30:07
- 链接: https://anzai.sleepingbed.top/archives/posts/908a9dd4.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。