数据仓库心得(8)数仓事实表和维度表技术

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 数仓事实表和维度表技术

所谓的事实表和维度表技术,指的就是如何和构造一张事实表和维度表,是的事实表和维度表,可以涵盖现在目前的需要和方便后续下游数据应用的开发。

事实表,就是一个事实的集合。事实来自业务过程的度量,基本上以数量值表示。事实表行对应一个事实,一个事实对应一个物理可以观察的事件,例如,再零售事件中,销售数量与总额是数据事实,与销售事件不相关的度量不可以放在同一个事实表里面,如员工的工资。

事实表是实际发生的度量,对应的,这些度量我们可以分为三中类型:可加、半可加、不可加。可加性度量可以按照与事实表关联的任意维度汇总。半可加度量可以对某些维度汇总,但不能对所有维度汇总。差额是常见的半可加事实,除了时间维度之外,它们可以跨越所有维度进行加法操作。不可加度量,比如比率,任何维度都不能直接相加。因此对于不可加度量,我们要尽可能的把不可加度量拆分为可加度量,例如比率,我们可以分别存储他们的分子和分母,使其转为可加度量。

对于事实表,还有一类值NULL,需要我们去校验和保证,对于事实表的度量,我们可以允许存在NULL,不过对于一些外键,则不能存在空值,否在会导致违反参照完整性的情况发生,我们可以赋予默认的代理键来表示未知或者NULL的情况。

参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。参照完整性又称引用完整性。

如果一个度量出现在多个事实表里面,我们还需要保证,多个事实表汇总到同一个维度的时候,度量的值相等,并且命名尽量相同,这就是一致性事实。一致性事实可以保证数据口径的一致和取数方便。如何保证数据事实的一致性呢?如何保证多张事实表相同字段相同?这里建议有两个,一是字段名称相同,二是开发完成的时候,可以对表数据的值比对,并且可以起一个数据校验的任务,定时校验比对,如果有问题就告警。

简单的,我们可以大概分为事务事实表,周期快照事实表,累计快照事实表,无事实的事实表。

事务事实表:事务事实表的一行对应空间或者时间上某点的度量事件。即流水行数据。
周期快照事实表:周期快照事实表中的每一行汇总了发生在某一标准周期,例如某一天的多个事实。即按某个维度轻度汇总的数据。
累计快照事实表:累积快照事实表的行汇总了发生在过程开始和结束之间可预测步骤内的度量事件。也就是记录整一个业务过程,如下单,包含下单时间,支付时间,赔付时间等。
无事实的事实表:有一些事件是没有事实的,事实包含多个度量,也就是部分事件没有度量,只有维度,例如某天学生参加的课程。

图片.png

接下来说说维度表的一些要点,维度表包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境与事实表行完全对应。

维度表开发过程中有下面几个点。

维度代理键,维度表中会包含一个列,表示唯一主键,该主键不是操作型系统的自然键,如果采用自然键,需要多个维度行表示,另外,维度的自然键可能由多个源系统建立,这些自然键可能会出现兼容性问题。所以这里可以对代理键做一些处理,具体可以看业务形态,如果源系统已经保证了唯一,直接应用也是没有问题的。
退化维度,有时,维度除了主键外没有其他内容,例如订单表里面的发票维度只有发票号,没有其他的信息,那么我们可以将这个维度放入事实表里面,这个就是退化维度。
一致性维度,当不同的维度表的属性具有相同列名和领域内容时,称维度具有一致性。利用一致性维度属性与每一个事实表关联,可将来自不同事实表的信息合并到同一个报表里面。
我们整理了维度表和事实表之后,我们需要形成一个总线矩阵。总线矩阵用于设计数据仓库架构的基本工具,矩阵的行表示业务过程,列代表维度。矩阵中的点表示维度与给定的业务过程是否存在关系,如下图。

图片.png

形成这样的一个架构之后,我们的数据仓库的结构分层,和里面的数据表设计完成了,就可以进行同步和开发了。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
8月前
|
存储 数据采集 JavaScript
深入理解数仓开发(一)数据技术篇之日志采集
深入理解数仓开发(一)数据技术篇之日志采集
|
30天前
|
人工智能 关系型数据库 MySQL
AnalyticDB MySQL版:云原生离在线一体化数据仓库支持实时业务决策
AnalyticDB MySQL版是阿里云推出的云原生离在线一体化数据仓库,支持实时业务决策。产品定位为兼具数据库应用性和大数据处理能力的数仓,适用于大规模数据分析场景。核心技术包括混合负载、异构加速、智能弹性与硬件优化及AI集成,支持流批一体架构和物化视图等功能,帮助用户实现高效、低成本的数据处理与分析。通过存算分离和智能调度,AnalyticDB MySQL可在复杂查询和突发流量下提供卓越性能,并结合AI技术提升数据价值挖掘能力。
53 16
|
2月前
|
数据挖掘 OLAP BI
OLAP技术:数据分析的修仙秘籍初探
OLAP(联机分析处理)是一种多维数据分析技术,能够从不同角度洞察数据,揭示隐藏的趋势和模式。它最早由Edgar F. Codd在1993年提出,旨在弥补传统OLTP系统的不足,支持复杂的数据分析与决策支持。OLAP操作包括钻取、上卷、切片、切块和旋转等,帮助用户灵活地探索数据。广泛应用于财务报告、市场分析、库存管理和预测分析等领域,是现代商业智能的重要工具。
85 7
|
8月前
|
消息中间件 关系型数据库 Kafka
深入理解数仓开发(二)数据技术篇之数据同步
深入理解数仓开发(二)数据技术篇之数据同步
|
7月前
|
存储 数据挖掘 BI
数据仓库深度解析与实时数仓应用案例探析
随着数据量的不断增长和数据应用的广泛深入,数据治理和隐私保护将成为数据仓库建设的重要议题。企业需要建立完善的数据治理体系,确保数据的准确性、一致性和完整性;同时加强隐私保护机制建设,确保敏感数据的安全性和合规性。
758 55
|
6月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
1860 2
|
6月前
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
233 1
|
6月前
|
监控 安全 数据中心
实时数仓Hologres容器技术问题之应用底层技术如何解决
容器技术如Docker基于Linux的namespace与cgroup技术,提供进程隔离与资源限制。这些技术早已有之,但未广泛普及。Docker创新性地提供了可分发的容器镜像格式,简化部署流程,从而促进了容器技术的大规模采用。
72 0
|
8月前
|
Cloud Native 关系型数据库 MySQL
《阿里云产品四月刊》—云原生数据仓库 AnalyticDB MySQL 版 新功能
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
124 3
|
7月前
|
存储 运维 监控
云原生数据仓库使用问题之怎么创建维度表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。