维度表和事实表_附05

合集下载

数仓事实表和维度表

数仓事实表和维度表

数仓事实表和维度表事实表(Fact Table)和维度表(Dimension Table)是构建数据仓库的两个基本组成部分。

事实表含有数据仓库所分析的业务事实数据,维度表包含了描述事实表中数据的相关维度属性。

事实表是数据仓库中的核心组件,存储了与业务过程或事件相关的数值度量。

它通常是一个大型的记录集合,每个记录代表一个特定的业务事实,例如销售额、订单数量、客户数量等。

事实表的主要特点包括以下几点:1. 事实表通常是较大的表,因为它包含了大量的事实数据。

这些数据通常是高度汇总的,以支持各种分析需求。

2. 事实表是高度粒度化的,即它存储了最详细的业务事实数据。

例如,每个销售订单的具体信息都可以被存储在事实表中。

3. 事实表是和时间相关的,它可以基于时间分析业务过程的变化和趋势。

时间维度的属性通常作为事实表的一部分,以支持时间序列的分析。

维度表提供了对事实表中数据进行详细描述和解释的属性。

它是事实表的关联表,通过一个或多个维度将数据与事实表进行关联。

维度表的主要特点包括以下几点:1. 维度表描述了事实表中数据的上下文信息,提供了多维度的分析能力。

例如,对于销售事实表,维度表可以包含产品维度、时间维度、地理维度等等。

2. 维度表通常是相对较小的表,因为它包含的是对事实记录的描述性属性。

通常情况下,维度表中的每一行对应着一个唯一的维度值。

3. 维度表是稳定的,它的数据相对不太频繁地变动。

例如,产品维度表一般不会频繁更新,只有在新增产品或者修改产品属性时才需要更新。

事实表和维度表之间通过关系建立了数据仓库的模型,常见的有星型模型和雪花模型。

在星型模型中,事实表与多个维度表直接关联;而在雪花模型中,维度表可以再被分解为更细粒度的表,以实现更多复杂的维度关联关系。

通过事实表和维度表的组合,数据仓库可以支持各种复杂的多维度分析需求。

事实表存储了数值化的业务事实数据,而维度表提供了对这些数据进行描述和解释的属性。

通过对事实表和维度表进行查询和分析,可以获得对业务过程的深入理解,发现隐藏在数据背后的规律和趋势。

裂变表结构设计

裂变表结构设计

裂变表结构设计裂变表是指在数据仓库中存储每个转化步骤的数量和比率的表,通常采用星型模型来设计。

其中,事实表中存储每个转化步骤的数量和时间戳等信息,维度表中则存储与转化相关的维度信息,比如用户、产品、地理位置、时间等。

具体表结构设计如下:1. 事实表(Fact Table):事实表是存储裂变数据的核心表,包括以下字段:(1)事实表主键:通常采用自增主键。

(2)时间维度引用:用于标识事件发生的日期和时间。

(3)转化步骤编号:用于标识转化过程中的每个步骤,即从哪个节点转化到下一个节点。

(4)转化次数:标识每个转化步骤的数量。

2. 用户维度(User Dimension):用户维度中包括以下字段:(1)用户主键:每个用户应该有一个独一无二的标识,通常采用用户ID或者用户名。

(2)用户属性信息:包括性别、年龄、地理位置等信息。

3. 产品维度(Product Dimension):产品维度中包括以下字段:(1)产品主键:每个产品应该有一个独一无二的标识,可以是产品ID、产品名称等。

(2)产品属性信息:包括产品类型、品牌、规格等信息。

4. 时间维度(Time Dimension):时间维度包括以下字段:(1)日期:标识事件发生的日期。

(2)时间:标识事件发生的时间。

(3)日期属性信息:包括年、季度、月、日等信息。

5. 地理位置维度(Geographic Location Dimension):地理位置维度包括以下字段:(1)地理位置主键:标识地理位置。

(2)地理位置属性信息:包括国家、省份、城市、区县等信息。

以上是一个基本的裂变表的结构设计,具体设计根据实际业务需求进行调整和优化。

【数据仓库】4维度建模之事实表设计

【数据仓库】4维度建模之事实表设计

【数据仓库】4维度建模之事实表设计事实表是维度建模的核⼼,紧紧围绕着业务过程来设计,通过描述度量来表达业务过程,包含了维度的引⽤和业务度量值。

上⼀篇⽂章我们讲了《》,今天我们聊⼀下事实表的设计。

⼀样,我们的⽬录结构和内容参考了《阿⾥巴巴⼤数据之路》⼀书。

事实表的基础概念粒度事实表中的每⼀条记录所表达的业务细节程度被称为粒度。

粒度由两种⽅式表述:维度属性组合所表⽰的细节程度所表⽰的具体业务含义事实⽤来描述业务过程的度量,⼀般是整形、浮点型的⼗进制数值。

可加:对任何维度进⾏汇总半可加:只能对特定维度进⾏汇总,如库存,按照地点、商品维度汇总是有意义的,按时间汇总是⽆意义的不可加:⽐率型,需要拆解为可加的度量来实现汇总,如商品购买率=> 购买⼈数,浏览⼈数相对于维度表,事实表会显得更细长,变化速度也会⽐维度表快。

事实表中也是可以存储维度属性的,这种操作称为——维度退化,⽽相应的维度属性称为——退化维度。

事实表类型事务事实表:按最细粒度来保存业务过程的数据,如购买商品事实表周期快照事实表:按照固定的时间间隔(年、⽉、⽇),记录事实累计快照事实表:覆盖整个业务⽣命周期,从开始到结束的累计事实,通常具有多个⽇期时间字段来记录关键的时间点,当⽣命周期发⽣变化,记录也会随之被修改。

设计原则原则⼀:尽可能包含所有与业务过程相关的事实事实表的设计⽬的是为了度量业务过程。

所以分析哪些事实与业务过程有关,是设计中⾮常重要的关注点。

在事实表中应尽量包含所有与该业务过程相关的事实,即使有冗余,但因为事实通常是数字型,带来存储开销不会很⼤!原则⼆:只选择与业务过程相关的事实在选择事实时,应该注意只选择与业务过程有关的事实。

⽐如在下单的业务过程中,不应该存在⽀付⾦额这⼀个属于⽀付业务过程的事实。

原则三:不可加的事实拆分为可加的度量如商品购买率 => 购买⼈数,浏览⼈数原则四:在选择维度和事实之前必须先声明粒度⼀般在设计事实表过程中,粒度定义越细越好,从最低级别的原⼦粒度开始能满⾜之后⽆法预期的⽤户需求。

数仓事实表和维度表

数仓事实表和维度表

数仓事实表和维度表数据仓库(Data Warehouse)是一个用于支持大规模数据分析和决策制定的数据库系统。

在数据仓库中,事实表和维度表是两个核心组件,它们在数据存储和分析过程中起着重要的作用。

事实表(Fact Table)是一个用于存储数仓中的事实数据的表。

事实表通常包含大量的记录,用于描述业务中的事实或事件。

事实表的每一行记录都与一个或多个维度表相关联,通过这种关联关系,我们可以对事实数据进行分析和查询。

例如,在一个销售数据仓库中,事实表可以存储每次销售交易的详细信息,如销售日期、产品ID、客户ID、销售数量和销售金额等。

维度表(Dimension Table)是用于描述事实数据所属的特定维度的表。

维度通常描述了业务中的各种特征,如时间、地理位置、产品、客户等。

维度表的每一行记录包含了一个唯一的标识符和与该维度相关的其他属性信息。

维度表与事实表之间通过共同的标识符建立关联,从而实现数据的分类、分组和筛选。

例如,在销售数据仓库中,时间维度表可以存储每一天的日期信息,如年、季度、月份和星期等。

事实表和维度表的设计与建模是数仓架构的关键步骤之一。

在设计事实表时,我们需要仔细分析业务需求,并确定需要存储的事实数据的粒度。

事实表的粒度应该是尽可能细粒度的,以便于后续的分析和查询。

同时,我们还需要确定事实表与维度表之间的关联关系,选择合适的联接键进行关联操作。

这些关联关系将决定了数仓中数据的聚合和汇总方式。

维度表的设计同样重要。

在设计维度表时,我们需要确定哪些属性是维度属性,并通过标识符和其他属性进行描述。

维度表的属性应具有确定性和稳定性,以便于数据的一致性和可靠性。

此外,我们还可以为维度表添加层级结构,以支持多层次的数据分析和查询。

例如,地理位置维度可以包含国家、省份、城市等多个层级。

在数据仓库中,事实表和维度表的设计要根据具体的业务需求和分析目标进行调整和优化。

有时候,我们可能需要对事实表进行分区和索引,以提高数据查询的效率。

大数据技术与数据仓储管理考试 选择题 60题

大数据技术与数据仓储管理考试 选择题 60题

1. 大数据的“3V”模型不包括以下哪个特点?A. 速度B. 多样性C. 价值D. 体积2. 下列哪种技术是用于大数据存储的?A. HadoopB. JavaC. PythonD. C++3. 数据仓库的主要目的是什么?A. 在线交易处理B. 数据分析和决策支持C. 数据备份D. 数据加密4. 下列哪个不是数据仓库的特征?A. 主题导向B. 集成性C. 时变性D. 实时性5. 在数据仓库设计中,星型模式的核心是什么?A. 事实表B. 维度表C. 索引表D. 日志表6. 下列哪个工具常用于大数据分析?A. ExcelB. TableauC. PhotoshopD. AutoCAD7. 数据湖和数据仓库的主要区别是什么?A. 数据湖存储原始数据,数据仓库存储处理过的数据B. 数据湖用于交易处理,数据仓库用于分析C. 数据湖是关系型数据库,数据仓库是非关系型数据库D. 数据湖是开源的,数据仓库是商业的8. 下列哪个是NoSQL数据库的例子?A. MySQLB. OracleC. MongoDBD. SQL Server9. 数据仓库的生命周期不包括以下哪个阶段?A. 规划B. 设计C. 部署D. 维护10. 下列哪个技术用于大数据处理中的数据清洗?A. MapReduceB. SparkC. PigD. Hive11. 数据仓库中的维度表通常包含哪些信息?A. 度量值B. 时间、地点、产品C. 交易记录D. 客户信息12. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的事实数据B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据13. 在数据仓库中,ETL过程不包括以下哪个步骤?A. 抽取B. 转换C. 加载D. 分析14. 下列哪个工具用于大数据的可视化?A. Power BIB. EclipseC. Visual StudioD. IntelliJ IDEA15. 数据仓库的集成性意味着什么?A. 数据仓库中的数据是集成的B. 数据仓库可以集成多个数据源C. 数据仓库中的数据是独立的D. 数据仓库中的数据是分散的16. 下列哪个是大数据处理中的批处理技术?A. StormB. FlinkC. HadoopD. Kafka17. 数据仓库的时变性意味着什么?A. 数据仓库中的数据是静态的B. 数据仓库中的数据是动态的C. 数据仓库中的数据随时间变化D. 数据仓库中的数据是固定的18. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据19. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多20. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据21. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析22. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据23. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多24. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据25. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析26. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据27. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多28. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据29. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析30. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据31. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多32. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据33. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析34. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据35. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多36. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据37. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析38. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据39. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多40. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据41. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析42. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据43. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多44. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据45. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析46. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据47. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多48. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据49. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析50. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据51. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多52. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据53. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析54. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据55. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多56. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据57. 数据仓库的规划阶段包括哪些活动?A. 需求分析B. 数据建模C. 数据加载D. 数据分析58. 下列哪个是数据仓库中的维度表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据59. 在数据仓库中,事实表和维度表的关系是什么?A. 一对一B. 一对多C. 多对一D. 多对多60. 下列哪个是数据仓库中的事实表的特点?A. 包含大量的度量值B. 包含大量的维度数据C. 包含大量的索引数据D. 包含大量的日志数据答案:1. C3. B4. D5. A6. B7. A8. C9. D10. C11. B12. A13. D14. A15. B16. C17. C18. B19. B20. A21. A22. B23. B24. A25. A26. B27. B28. A29. A30. B31. B32. A33. A34. B35. B36. A37. A38. B39. B40. A41. A42. B43. B44. A45. A46. B47. B48. A49. A50. B51. B53. A54. B55. B56. A57. A58. B59. B60. A。

维度建模的方法论

维度建模的方法论

维度建模的方法论维度建模是一种数据建模的方法,它能够帮助企业将大量的数据组织起来,从而构建一个完整的数据仓库。

它的核心思想是将数据按照不同的维度进行分类,然后通过这些维度来组织数据,从而使数据能够更方便地被分析和利用。

维度建模的基本概念在维度建模中,最基本的概念就是“事实表”和“维度表”。

事实表是描述某个业务过程中的各种指标,如销售额、利润、数量等等。

而维度表则是描述事实表中这些指标所涉及的维度,如时间、地点、产品、客户等等。

维度建模的关键在于如何选择合适的维度。

在选择维度时,需要考虑以下几个因素:1.可查询性:维度需要能够支持查询,从而方便分析师进行数据分析。

2.可扩展性:维度需要能够支持未来的扩展,从而适应业务的发展。

3.可重用性:维度需要能够在多个事实表中重复使用,从而提高数据仓库的效率。

维度建模的步骤维度建模的步骤主要包括以下几个:1.确定业务问题:维度建模的第一步是确定业务问题,即需要对哪些业务数据进行分析。

2.选择合适的维度:在确定业务问题之后,需要选择合适的维度来组织数据,从而方便数据分析。

3.设计事实表:事实表是描述业务过程中的各种指标,需要根据业务问题来设计。

4.设计维度表:维度表是描述事实表中指标所涉及的维度,需要根据选择的维度来设计。

5.建立关系:在完成事实表和维度表的设计后,需要建立它们之间的关系,从而构建一个完整的数据模型。

维度建模的优点维度建模有以下几个优点:1.数据模型简单:维度建模能够将复杂的数据组织起来,从而构建一个简单的数据模型。

2.查询效率高:维度建模能够将数据按照维度进行分类,从而提高查询效率。

3.易于维护:维度建模能够将数据组织起来,从而方便维护和管理数据。

4.适应业务变化:维度建模能够支持未来的业务扩展,从而适应业务的变化。

维度建模的应用场景维度建模适用于以下几个场景:1.数据量大:维度建模能够将大量的数据组织起来,从而方便数据分析。

2.数据复杂:维度建模能够将复杂的数据组织起来,从而构建一个简单的数据模型。

数据仓库建模

数据仓库建模

数据仓库建模一、概述数据仓库建模是指根据业务需求,将原始数据进行整理、转换和存储,以便于数据分析和决策支持。

本文将详细介绍数据仓库建模的标准格式,包括数据仓库架构、维度建模和事实表设计等方面的内容。

二、数据仓库架构1. 数据仓库层次结构数据仓库通常由三层构成:操作型数据层、数据仓库层和数据展示层。

操作型数据层用于存储原始数据,数据仓库层用于存储经过整理和转换的数据,数据展示层用于展示数据分析结果。

2. 数据仓库模型数据仓库模型采用星型模型或者雪花模型。

星型模型由一个中心的事实表和多个维度表组成,每一个维度表与事实表通过外键关联。

雪花模型在星型模型的基础上,将维度表进一步规范化,形成多个层次的维度表。

三、维度建模1. 维度表设计维度表包含业务过程中的维度属性,如时间、地点、产品等。

每一个维度表应包含一个主键和多个属性列,属性列用于描述维度的特征。

主键与事实表进行关联。

2. 事实表设计事实表包含业务过程中的度量指标,如销售额、订购数量等。

每一个事实表应包含一个主键和多个度量列,度量列用于存储度量指标的数值。

主键与维度表进行关联。

3. 维度建模技巧维度建模过程中,需要注意以下几点:- 维度表应具备高度可重用性,便于在不同的事实表中使用。

- 维度表的属性列应具备高度一致性和完整性,便于数据分析和查询。

- 维度表的属性列应具备高度可扩展性,便于根据业务需求进行扩展。

四、事实表设计1. 事实表类型事实表分为事务型事实表和积累型事实表。

事务型事实表记录每一个业务事件的详细信息,积累型事实表记录业务事件的累计值。

2. 事实表度量粒度事实表度量粒度应根据业务需求进行确定。

普通情况下,度量粒度应尽可能细化,以便于进行更详细的数据分析。

但也需要考虑数据存储和查询效率的问题。

3. 事实表的度量指标事实表的度量指标应根据业务需求进行确定。

度量指标应具备可度量性、可加性和可分解性等特性,便于进行数据分析和计算。

五、数据仓库建模工具数据仓库建模过程中,可以使用一些建模工具辅助设计和管理数据仓库,如PowerDesigner、ERwin等。

数据仓库的多维数据模型

数据仓库的多维数据模型

数据仓库的多维数据模型数据仓库是一个用于存储和管理大量结构化和非结构化数据的系统,它被广泛应用于企业和组织中,以支持决策分析和业务智能。

数据仓库的设计和建模是实现高效数据存储和查询的关键步骤之一。

其中,多维数据模型是一种常用的数据建模方法,它可以匡助我们更好地理解和分析数据。

一、什么是多维数据模型?多维数据模型是一种以多维方式组织和表示数据的模型。

它基于事实(Facts)和维度(Dimensions)的概念,将数据组织成多个交叉的维度层次结构,以支持复杂的查询和分析。

在多维数据模型中,事实是指我们要分析的业务指标或者度量,维度是指描述事实的各种属性。

二、多维数据模型的核心概念1. 事实(Facts):事实是多维数据模型中的中心数据,也是我们要分析的业务指标或者度量。

它可以是数值型数据,如销售额、利润等,也可以是非数值型数据,如定单状态、产品类别等。

2. 维度(Dimensions):维度是描述事实的各种属性。

它可以是时间维度、地理维度、产品维度等。

维度可以分为层次结构,比如时间维度可以分为年、季度、月、日等层次。

3. 层次结构(Hierarchy):层次结构是维度的一个重要概念,它用于组织和表示维度的不同层次。

比如时间维度可以按年、季度、月、日进行层次划分。

4. 立方体(Cube):立方体是多维数据模型中的一个重要概念,它由多个维度和事实组成,用于存储和查询数据。

立方体可以看做是一个多维数组,其中每一个维度都对应一个维度的层次结构。

三、多维数据模型的优势1. 灵便性:多维数据模型可以根据不同的业务需求进行灵便的数据分析和查询。

通过切换维度和层次,可以快速获取不同维度下的数据,匡助用户深入了解业务情况。

2. 性能优化:多维数据模型的设计可以提高数据查询的性能。

通过估计算和聚合数据,可以加快查询速度,提高用户的查询体验。

3. 可视化分析:多维数据模型可以与数据可视化工具结合使用,匡助用户更直观地理解和分析数据。

事实表与维度表解释

事实表与维度表解释

销售单数据 日库存数据 发货进度数据
比较
特点
时间/时期 粒度 事实表加载 事实表更新 时间维 事实
事务事实
时间 代表一个交易事件 新增 不更新 业务日期 交易活动
周期快照事实
时期 代表一个时间周期 新增 不更新 时期末 时间周期内的绩效
累积快照事实
时间跨度较短的多个时点 代表一个业务周期 新增和修改 新事件产生时更新 多个业务过程的完成日期 限定多个业务阶段内的绩效
注 4、维度表若被多个事实表使用,则应作为公共维度表来设计。

5、维度表,区分代理键和自然键的目的是跟踪在操作性系统中无须考虑的数据变化情况
总之,事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能
够以合适的角度来聚合主题内容为准则
04表关系
事实表
1、用来存储事实的度量及指向各个维的外键值 2、不应该包含描述性的信息,也不应该包含除 数字度量字段及使事实与纬度表中对应项的相 关索引字段之外的任何数据 3、可以累计的度量值,最有用的度量值是可累 计的度量值,其累计起来的数字是非常有意义 的,用户可以通过累计度量值获得汇总信息 4、非累计的度量值可以用于事实数据表,单汇 总结果一般是没有意义的,但是求平均值是有 意义的。
时间维
01事实表
用来存储事实的度量 和各维的码值
举例
定义
事实表
事务事实表 Transaction fact table 周期快照事实表 Periodicsnapshot fact table 累积快照事实表 Accumulatingsnapshot fact table
分类
事务事实 周期快照事实 累积快照事实
数据进行分析时所用的量,可 有多个维度,不超15个

大数据:事实表设计

大数据:事实表设计

⼤数据:事实表设计⽬录:1. 事实表基础1. 事实表特征2. 事实表设计原则3. 事实表设计⽅法2. 事务事实表1. 设计过程2. 单事务事实表3. 多事务事实表4. 两事实表对⽐5. ⽗⼦事实的处理⽅式6. 事实的设计原则3. 周期快照事实表1. 特性2. 实例阐述周期快照事实表设计过程3. 注意事项4. 累积快照事实表1. 设计过程2. 特点3. 特殊处理4. 物理处理5. 三种事实表的⽐较6. ⽆事实的事实表7. 聚集型事实表1. 聚集的基本原则2. 聚集的基本步骤3. 阿⾥的公共汇总层4. 聚集补充说明⼀、事实表基础1、事实表特征事实表是围绕着业务过程来设计的,通过获取描述业务过程的度量来表达业务过程,包含了引⽤的维度和与业务过程有关的度量;事实表的作⽤:度量业务过程;事实表的粒度:事实表中,⼀条记录所表达的业务细节程度;事实表中,所有事实需要与表定义的粒度保持⼀致,在同⼀个事实表中,不能有多种不同粒度的事实;粒度的表述⽅式:1. 维度属性组合所表⽰的细节程度;(⼀般适⽤于 “聚集性事实表”)2. 所表⽰的具体业务含义;事实的类型:为整型或浮点型的⼗进制数,有三种事实类型:1. 可加型事实:可以按照与事实表相关的任意维度汇总,且汇总结果有意义;2. 半可加型事实:只能按照特定维度汇总,不能对所有维度获得有意义的汇总;(如,事实可以进⾏汇总相加,但是汇总结果没有意义)3. 不可加型事实:完全不具有可加性,⽐如⽐率型事实;对于不可加性的事实,可以分解为可加的组件来实现聚集;退化维度:存储在事实表中的维度列;退化维度也可以⽤来进⾏事实表的过滤查询、实现聚合操作等;事实表的 3 种类型:1. 事务事实表也称原⼦事实表,描述业务过程,跟踪控件或时间上某点的度量事件,保存的是最原⼦的数据;2. 周期快照事实表以⼀个周期为时间间隔,来记录事实,⼀般周期可以是每天、每周、每⽉、每年等;3. 累积快照事实⽤来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个⽣命周期,通常具有多个⽇期字段来记录关键时间点;当过程随着⽣命周期不断变化时,记录也会随着过程的变化⽽被修改;2、事实表设计 8 ⼤原则原则 1:尽可能包含所有与业务过程相关的事实分析哪些事实与业务过程相关,是设计过程中⾮常重要的关注点;在事实表中,尽量包含所有与业务过程相关的事实,即使存在冗余,由于事实通常是数字型,存储开销不会太⼤;原则 2:只选择与业务过程相关的事实如,订单的下单这个业务过程,事实表中不应该存在⽀付⾦额这个表⽰⽀付业务过程的事实;原则 3:分解不可加性事实为可加的组件如,订单的优惠率,应分解为订单原价⾦额与订单优惠⾦额两个事实存储在事实表中;原则 4:在选择维度和事实之前必须先声明粒度粒度⽤于确定事实表中⼀⾏所表⽰业务的细节层次,决定了维度模型的扩展性;每个维度和事实必须与所定义的粒度保持⼀致;设计事实表时,粒度定义越细越好,⼀般从最低级别的原⼦粒度开始;因为原⼦粒度提供了最⼤限度的灵活性,可以⽀持⽆法预期的各种细节层次的⽤户需求;原则 5:在同⼀个事实表中不能有多种不同粒度的事实疑问:怎么判断不同事实的粒度是否相同?例:⼀个不规范的 “机票⽀付成功事务事实表”粒度为票⼀级;(实际业务中,⼀个订单可以同时⽀付多张票)票⽀付⾦额和票折扣⾦额,两个事实的粒度为 “票级”,与定义的粒度⼀致;订单⽀付⾦额和订单票数,两个事实的粒度为 “订单级”,属于上⼀层订单级数据,与 “票级” 事实表的粒度不⼀致,且不能进⾏汇总;如果,以订单⾦额和订单票数这两个维度汇总总⾦额和总票数,会造成⼤量的重复计算;原则 6:事实的单位要保持⼀致如,订单⾦额、订单优惠⾦额、订单运费这 3 个事实,应该采⽤统⼀的计量单位,统⼀为元或者分,以⽅便使⽤;原则 7:对事实的 null 值要处理原因:在数据库中,null 值对常⽤数字型字段的 SQL 过滤条件都不⽣效;如,⼤于、⼩于、等于、⼤于或等于、⼩于或等于;处理:⽤ 0 代替 null ;原则 8:使⽤退化维度提⾼事实表的易⽤性1. 事实表中存储各种类型的常⽤维度信息,较少下游⽤户使⽤时关联多个表的操作;2. 通过退化维度,可以实现对事实表的过滤查询、控制聚合层次、排序数据、定义主从关系等;易⽤性:对事实表,更较少关联操作、过滤查询、控制聚合层次、排序数据、定义主从关系等;在 Kimball 的维度建模中,通常按照星形模型的⽅式设计,通过事实表的外键关联专门的维表,这种⽅式来获取维度,谨慎使⽤退化维表;这与⼤数据领域的事实表设计不⼀样;思路:通过增加冗余存储,减少计算开销,提⾼使⽤效率;3、事实表设计⽅法Kimball 的维度模型设计 4 步法:选择业务过程、声明粒度、确定维度、确定事实;当前的互联⽹⼤数据环境,维度模型的设计,是基于 Kimball 的四步维度建模⽅法进⾏了更进⼀步的改进:第⼀步:选择业务过程及确定事实表类型思路:详细分析需求,对业务的整个⽣命周期进⾏分析,明确关键的业务步骤,从⽽选择与需求有关的业务过程;以实例说明:如何选择业务过程?如何确定事实表类型?例:淘宝的⼀个交易订单1. 分析业务的⽣命周期:如上图,业务过程通常使⽤⾏为动词表⽰业务执⾏的活动;2. 明确关键的业务步骤:该订单流转的业务过程有 4 个:创建订单→买家付款→卖家发货→买家确认收货;3. 根据业务需求,选择与维度建模有关的业务过程;如,是选择 “买家付款” 这个业务过程,还是选择 “创建订单” 和 “买家付款” 这两个业务过程,具体根据业务情况来定;4. 根据所选的业务过程确定事实表类型;如,选择 “买家付款” 这个业务过程,则事实表类型应为只包含买家付款这⼀个业务过程的 “单事务事实表”;如,选择了所有 4 个业务过程,并且需要分享各业务过程的时间间隔,则事实表类型应为包含了所有 4 个业务过程的 “累积快照事实表”;第⼆步:声明粒度粒度的作⽤:1. 粒度的声明,意味着精确定义事实表的每⼀⾏所表⽰的业务含义;2. 明确的粒度能够确保对实表中⾏的意思的理解不会产⽣混淆,保证所有的事实按照同样的细节层次记录;粒度的选择:尽量选择最细级别的原⼦粒度,以确保事实表的应⽤具有最⼤的灵活性;1. 灵活性:⽀持⽆法预期的各种细节层次的⽤户需求;2. 对于订单级别,粒度可以定义为最细的订单级别;(如,⽗⼦订单,事实表的粒度可以定 “⼦订单级别” ;)第三步:确定维度完成了粒度声明,就意味着确定了主键,对应的维度组合以及相关的维度字段也可以确定了;选择维度的原则:应该选择能够描述清楚业务过程所处的环境的维度信息;如,淘宝订单 “付款事务事实表” 中,粒度为 “⼦订单”,相关的维度有买家、卖家、商品、收货⼈信息、业务类型、订单时间等;第四步:确定事实确定原则:选择与业务过程有关的所有事实,且事实的粒度要与所声明的事实表的粒度⼀致;思路:可以通过回答 “过程的度量是什么” 来确定;注意:将不可加性事实分解为可加的组件;(分解的原则:可以通过分解后的可加的属性值,计算得到不可加性事实)第五步:冗余维度冗余维度:给事实表添加下游⽤户常⽤的维度;作⽤:1. 提⾼下游⽤户使⽤效率,降低数据获取的复杂性;2. ⽅便实现对事实表的过滤查询、控制聚合层次、排序数据、定义主从等操作;⼆、事务事实表事实事务表:也称原⼦事务表,跟踪控件或时间的某点的度量事务,确保最原⼦的数据;任何类型的时间都可以被理解为⼀种事务;如,交易过程中的创建订单、买家付款;物流过程中的揽活、发货、收件;退款过程中的申请退款、申请⼩⼆介⼊等;都可以被理解为⼀种事务;事实事务表,就是针对这些事务的过程构建的⼀类事实表,⽤以跟踪定义业务过程的个体⾏为,提供丰富的分析能⼒,作为数据仓库原⼦的明细层数据;1、设计过程以 “淘宝交易事务事实表” 为例,阐述事务事实表的⼀般设计过程: 1/1)选择业务过程淘宝交易订单的流转过程,⼀共有 4 个重要过程:创建订单、买家付款、卖家发货、买家确认收货,即下单、⽀付、发货、成功完结4 个业务过程;淘宝交易事务事实表的设计,应着重从这 4 个业务过程展开;Kimball 维度建模理论认为,为了便于进⾏独⽴的分析研究,应该为每个业务过程建⽴⼀个事实表; 1/2)确定粒度业务过程选定后,要针对每个业务过程确定⼀个粒度,即确定事务事实表每⼀⾏所表达的细节层次;1. 详细分析业务细节两类卖家:⼀类是没有店铺的,出售闲置的或⼆⼿的;⼀类是有店铺的,出售新商品;两种交易⽅式:⼀种是选定商品直接购买,产⽣⼀个交易订单;⼀种是将多种商品先加⼊购物车,然后⼀起结算,此时每个商品都会产⽣⼀个订单,同时对于同⼀个店铺额外产⽣⼀个订单,即⽗订单;1. 同⼀家店铺购买的多种商品,⽗订单会承载订单物理、店铺优惠等信息;2. ⼦订单记录了⽗订单的订单号,并且有⼦订单标志;(如,下图 11.3)3. 如果⼀个店铺只购买⼀种商品,⼦订单即为⽗订单,两者合并,只保留⼀条记录;(如,下图 11.2)2. 为事务事实表确定粒度四个重要业务过程,要对每⼀个过程确定⼀个粒度:下单、⽀付、成功完结三个业务过程,选择交易⼦订单粒度,即每个⼦订单为事务事实表的⼀⾏;卖家发货,这个业务在实际中更多的是 “物流单粒度” ,⽽⾮ “⼦订单粒度”,同⼀个⼦订单可以拆开成多个物流单进⾏发货;秉承“确定最细粒度原则”,对于 “卖家发货” 确定为 “物流单粒度”; 1/3)确定维度1. 按照经常⽤于统计分析的场景,确定维度包含:买家、卖家、商品、商品类⽬、发货地区、收货地区、⽗订单维度、杂项维度;2. 杂项维度,由于订单的属性较多,如,订单的业务类型、是否⽆线交易、订单的 attributes 属性等,对于这些使⽤较多却⼜⽆法归属到上述维度的属性,则要新建⼀个杂项维度进⾏存放;PK(Primary Key):主键;FK( Foreign Key):外键;(指其它⼦维表的主键,相对于主维表来说是主维表的外键) 1/4)确定事实作为过程度量的核⼼,事实表应该包含与其描述过程(下单、⽀付、成功完结,三个主要过程)有关的所有事实;逐个业务过程进⾏分析:由于粒度是⼦订单,⽗订单上的⾦额需要分摊到⼦订单上,如⽗订单邮费、⽗订单折扣等;(怎么分摊呢)1. 下单业务过程:下单⾦额、下单数量、下单分摊⾦额(也就是⼦订单商品⾦额);2. ⽀付业务过程:⽀付⾦额、分摊邮费、折扣⾦额、红包⾦额、积分⾦额;3. 完结业务过程:确定收货⾦额; 1/5)冗余维度冗余维度:将常⽤的维度退化到事实表中;便于下游更⽅便的使⽤:过滤查询、统计聚合等;将买家星级、卖家星级、标签、店铺名称、商品类型、商品特征、商品属性、类⽬层级等常⽤维度属性,都冗余到事实表中;Kimball 维度建模理论建议,在事实表中只存放个维表的外键(也就是各个维度表⾃⼰的主键,只是相对于事实表,称它们为外键) 1/6)其它在设计过程中遗留⼀个问题,对于单⼀事实表中是否包含多个业务过程,还没有给出定论;2、单事务事实表单事务事实表:针对每⼀个业务过程设计⼀个事实表;优点:⽅便的对每个业务过程进⾏独⽴的分析研究;以阿⾥的 1688 交易流程为例:1. 选择业务过程1688 交易流程也分为 4 个主要业务过程:下单、⽀付、发货、完结;1688 交易选择下单和⽀付两个业务过程设计事务事实表,分别是:1688 交易订单下单事务事实表、1688 交易订单⽀付事务事实表;2. 对每个业务过程确定粒度、维度、事实1688 交易订单下单事务事实表:1. 粒度:⼦订单级粒度;2. 维度:买家、卖家、商品、⽗订单、收货地区等;3. 事实:下单分摊⾦额、折扣⾦额等;1688 交易订单⽀付事务事实表:1. 粒度:⼦订单级粒度;2. 维度:买家、卖家、商品、⽗订单、收货地区等;3. 事实:⽀付⾦额、⽀付调整⾦额、⽀付优惠等;3. 详情实例每天的下单记录进⼊当天的下单事务事实表中,每天的⽀付记录进⼊当天的⽀付事务事实表中;由于事实表具有稀疏性质,因此只有当天数据才会进⼊当天的事实表中;3、多事务事实表多是为事实表:同⼀个事实表包含多个不同的业务过程;两种事实处理⽅式:1. 不同业务过程的事实,使⽤不同的事实字段存放;2. 不同业务过程的事实,使⽤同⼀个事实字段存放,但增加⼀个业务过程标签;以淘宝交易事务事实表和淘宝收藏商品事务事实表为例,阐述多事务事实表设计过程: 3/1)淘宝交易事务事实表设计过程1. 分析交易流程,选择主要业务过程四个主要业务过程:下单、⽀付、发货、完结;2. 确定每个业务过程的粒度下单业务过程:⼦订单粒度;⽀付业务过程:⼦订单粒度;发货业务过程:物流单粒度;(由于 “物流单粒度” ⽐ “⼦订单粒度” 更细,秉承 “最细粒度原则”,选择 “物理粒度”;成功完结业务:⼦订单粒度;3. 确定事实表数量相同粒度的业务过程存放到同⼀个事实表中:淘宝交易事务事实表(存放下单、⽀付、完结业务数据)、淘宝交易物理事务事实表(存放发货业务数据);4. 确定维度和事实1. 确定维度分别分析统计各个业务过程的维度;将同⼀事实表中的业务的维度合并汇总;(不同的业务过程的维度,将含义相同的维度同⼀为⼀个维度)冗余常⽤维度到事实表中;2. 确定事实1. 分别分析统计各个业务过程中的相关事实;2. 处理不同业务的事实:针对每个度量都使⽤⼀个字段进⾏保存,即不同的事实永不不同的字段保存;如果不是当前业务的度量,采⽤零值处理;(如,下单业务过程,⽀付度量和成功完结度量全部置为 0 ;)3. 在事实表中,对不同业务过程进⾏标记淘宝交易事务事实表中包含 3 个业务过程,下单、⽀付、完结,则在事实表中添加:是否当天下单、是否当天⽀付、是否当天完结,3 种标签; 3/2)淘宝收藏商品事务事实表设计过程1. 业务分析确定业务过程:收藏商品、删除商品;2. 确定粒度思想:⽆论是收藏商品还是删除商品,都是⽤户对商品的操作,因此两个业务过程的粒度都可以确定为:⽤户加上商品;“⽤户加上商品”,根据该粒度,可以很直观的连接业务过程,即为收藏业务;3. 确定维度和事实1. 确定维度收藏商品业务过程:⽤户、商品;删除商品业务过程:⽤户、商品;冗余常⽤维度:商品类⽬、商品所属卖家等;2. 确定事实收藏商品业务过程和删除双排业务过程,它们的事实主要是商品价格;事实处理:使⽤功能同⼀个字段存放不同业务过程的事实;扩展:⼀般收藏事务表更多的是⽆事实的事实表,⽤于统⼀收藏或删除次数的; 3/3)多事务事实表的选择当不同业务过程的度量⽐较相似、差异不⼤时,可以采⽤上述的第⼆种多事务事实表的设计⽅式(淘宝收藏事务事实表),使⽤同⼀个字段来表⽰度量数据;存在问题:在同⼀个周期内会存放多条记录;当不同业务过程的度量差异较⼤时,可以选择第⼀种多事务事实表的设计⽅式(淘宝交易事务事实表);将不同业务过程的度量使⽤不同字段冗余到表中,⾮当前业务过程则置零表⽰;存在问题:度量字段零值较多;4、两种事实表对⽐多事务事实表与单事务事实表对⽐分析: 4/1)业务过程单事务事实表:⼀个业务过程建⽴⼀个事实表,只反映⼀个业务过程的事实;多事务事实表:同⼀个事实表中反映多个业务过程;多个业务过程是否能放在同⼀事实表:分析不同业务过程之间的相似性和业务源系统;业务过程相似性判断:根据不同业务过程的维度和事实的重合情况;如,淘宝交易系统中的下单、⽀付、成功完结这 3 个业务过程,存在相似性,都属于订单处理中的⼀环,并且都来⾃于交易系统; 4/2)粒度和维度如果不同业务的粒度相同,且同时拥有相似的维度时,可以选择多事务事实表;如果各个业务的粒度不同,则必须建⽴不同的事实表; 4/3)事实处理事实的⽅式不同:1. 单事务事实表,能⽅便灵活的处理事实,仅仅体现同⼀个业务过程的事实即可;2. 多事务事实表,由于有多个业务过程,所有需要处理更多的事实;事实表选择:如果单⼀业务过程的事实较多,同时不同业务过程的事实⼜不相同,则考虑使⽤单事务事实表;(如果使⽤多事务事实表,会导致事实表零值或空值⽐较多) 4/4)下游业务使⽤单事务事实表,对下游⽤户⽽⾔更容易理解,关注哪个业务过程就使⽤相应的事务事实表;多事务事实表,包含多个业务过程,⽤户使⽤时往往较为困惑; 4/5)计算存储成本当业务过程数据来源于同⼀个业务系统,具有相同的粒度和维度,且维度较多⽽事实相对不对时,可以考虑使⽤多事务事实表,不仅其加⼯计算成本低,在存储上也相对节省; 4/6)单事务事实表和多事务事实表的⽐较5、⽗⼦事实的处理⽅式1. 以⼦订单为粒度,分摊⽗订单的事实;2. 将所有业务过程的度量,全部带进事务事实表中,包含⽗事实,也⼀起冗余到事实表中;为了下游⽤户使⽤,也将粒度不同的⽗事实冗余到⼦粒度的事实表中;仅拥有⽗⼦事实的处理,可将不同粒度的事实冗余到⼀个事实表中;弱不是⽗⼦事实,且粒度不同,不能冗余同⼀个事实表;例:淘宝交易系统,在同⼀家店铺⼀次购买多个商品,每个商品都会产⽣⼀个订单,⽽这⼏个商品⼀起产⽣⼀个⽗订单;⽗订单事实:订单总额、⽀付总额、⽀付邮费等;确定粒度:根据粒度最细原则,以⼦订单为粒度;以⼦订单为粒度,需要将⽗订单的事实进⾏分摊;将说有的事实(包括⽗订单的事实),全部冗余到淘宝交易事务事实表内;6、事实的设计准则 6/1)事实完整性事实表应包含与其描述的过程有关的所有事实,尽可能多的获取所有的度量;事实表中所有的事实,粒度必须⼀致;(⽗⼦事实除外)否则只能创建多个事实表,存放多种粒度的事实; 6/2)事实⼀致性在确定事务事实表时,明确存储每⼀个事实,以确保度量的⼀致性;度量⼀致性:度量单位⼀直、度量字段⼀直(是单字段还是组合字段);如,在淘宝交易事务事实表中,是⽗⼦订单时,虽以⼦订单为粒度,但也要明确下单⾦额和下单有效⾦额;虽然下游⽤户可以通过⼦订单⽀付⾦额和⼦订单下单有效⾦额汇总计算,但是在事实表中统⼀计算可以保证度量的⼀致性; 6/3)事实可加性将⾮可加性事实拆成组合的可加性事实;如,分摊⽐例、利润率等,虽然它们也是下游分析的关键点,但往往在事务事实表中关注更多的是可加性事实,下游⽤户在聚合统计时更加⽅便;三、周期快照事实表作⽤:存储⼀些状态度量;状态度量:如账户余额、商品库存、卖家累积交易额等状态;数据的特点:⼀般需要聚合与之相关的事务,才能识别或者通过计算得到;背景:由于通过事务事实表的⼀些数据进⾏聚合得到这些状态度量时,效率⾮常低下,特别是事务事实表数据量⾮常⼤的时候;事实:随着时间变化,表中的每⼀⾏数据,都是截⾄当前采⽤周期时的最新状态度量;粒度:⼀般可以⽤采样周期以及什么将被采样作为周期快照事实表的粒度;⼀般采⽤的内容是⼀个或多个维度,所以周期快照事实表的粒度通常也是被多维声明的;存储过程:(例:卖家历史⾄今下单⾦额)1. 采样,也就是聚集⼀个周期内产⽣的所有交易订单,统计计算这些订单的下单⾦额总和;2. 将本周期内采样汇总的数据,与历史截⾄上⼀周期的卖家下单总⾦额,进⾏汇总;3. 将汇总的⾦额存储在周期快照事实表中;(即每⾏的数据:历史截⾄该⾏所在周期的卖家下单⾦额)事务事实表可以很好的跟踪⼀个事件,并对其进⾏度量,以提供丰富的分析能⼒;背景:当需要⼀些状态度量,如,账户余额、买卖家星级、商品库存、卖家累积交易额等,则需要聚集与这些状态度量相关的⼀些事物,进⾏统计计算分析才能得到;或者通过聚合事物也⽆法识别这些状态量;对于这些状态量,事物事实表是⽆效率的;例:卖家累积交易⾦额,如果需要查看卖家年初⾄今,⼀长时间段的交易额,使⽤事务事实表进⾏统计汇总可以得到,但是随着时间跨度变⼤,聚集效率会越来越低;周期快照事实表:也称 “快照事实表”,在确定的时间间隔内,对实体的度量进⾏抽样,这样可以很容易的研究实体的度量值,⽽不需要聚集长期的事务历史;事实表中的事实,以周期为间隔记录⼀⾏,每次记录的事实都是历史⾄今的汇总数据或者统计计算后的数据;快照事实表在阿⾥数据仓库中的设计和应⽤:以淘宝交易结束后的评价数据、卖家的累积⽀付⾦额、买卖家星级等事实表的设计为例;周期快照事实表的 2 种产出模式(或者说从哪⾥采样数据,具体使⽤哪种⽅式,要看采样数据的来源):1. 从事务事实表进⾏汇总产出;(常见产出模式)2. 直接使⽤操作型系统的数据,作为周期快照事实表的数据源进⾏加⼯;(如,淘宝卖家星级、卖家 DSR 事实表等)1、特性与事务事实表对⽐:粒度:事务事实表的粒度能以多种⽅式表达,快照事实表的粒度通常以维度形式声明;事务事实表是稀疏的,但是快照事实表是稠密的;事实:事务事实表中的事实是完全可加的,但快照模型将⾄少包含⼀个⽤来展⽰半可加性质的事实; 1/1)⽤快照采样快照事实表周期性的采样状态度量;快照周期联合⼀个或多个维度,将被⽤来快照事实表的粒度,事实表的每⾏都将包含记录所涉及状态的事实;例:淘宝交易卖家⾃然年汇总事实表;业务需求:淘宝活动运营⼩⼆或者卖家,需要经常查看⼀些交易状态数据,如,⾃然年⾄今的下单⾦额、⽀付⾦额、⽀付买家数、⽀付商品件数等状态度;对于卖家,可能每天早上都想看⼀下截⾄昨天的成交情况;对于⼩⼆,可能在频繁的活动周期就需要查看⼀次成交情况;如果使⽤事务事实表进⾏聚集,带来的问题是:随着时间跨度增⼤,聚集效率会越来越低;因此需要设计快照事实表进⾏状态的度量;采⽤周期:天;下图所⽰的快照事实表,记录了每个卖家的下单和⽀付情况: 1/2)快照粒度粒度:采⽤周期 + 样本内容;如,在淘宝交易卖家快照事实表中,粒度被理解为 “每天针对卖家的历史截⾄当⽇的下单⽀付⾦额进⾏快照”;相当于每天记录⼀次历史⾄今的下单⽀付总⾦额;事实表中的数据,每周期记录⼀⾏,每次记录的数据:历史⾄今的下单⽀付⾦额(销售总额);快照周期根据业务需求情况⽽定,事实表维度也不只⼀个,还包括卖家和类⽬; 1/3)密度与稀疏性事务事实表是稀疏的:只有当天发⽣的业务过程,事实表才会记录该业务过程的事实,如下单、⽀付等;快照事实表是稠密的:⽆论当天是否有业务过程发⽣,都会记录⼀⾏;⽆论当天发⽣多少业务过程,也只会记录⼀⾏;如,针对卖家的历史⾄今的下单和⽀付⾦额,⽆论当天卖家是否有下单事实,都会给该卖家记录⼀⾏;稠密性的重要性:如果在每个周期内不记录⾏,就会和事务事实表⼀样,那么确定状态将变得⾮常困难; 1/4)半可加性快照事实表中收集到的状态度量都是半可加的;根据时间维度进⾏统计汇总的结果是没有意义的;半可加性事实:只能根据特定维度汇总,不能根据表的所有维度汇总,且汇总结果要有意义;虽不可以进⾏汇总,但可以计算⼀些平均值,如,⼀个周期内平均每个订单的平均⾦额;2、实例周期快照事实表设计过程设计步骤:1. 确定快照事实表的快照粒度;2. 确定快照事实表采⽤的状态度量;。

事实表设计的步骤

事实表设计的步骤

事实表设计的步骤
设计一个有效的事实表是构建数据仓库的重要部分。

以下是一些详细的步骤,可以帮助你设计一个优秀的事实表:
1. 深入理解业务需求:首先,你需要深入了解业务过程,明确事实表需要记录哪些信息。

例如,如果你正在设计一个销售事实表,你需要知道销售的具体业务过程,包括销售的产品、数量、价格、时间等。

2. 确定粒度:粒度是数据仓库中数据的最小单元。

在设计事实表时,你需要决定每一行应该代表什么。

一般来说,从最细的粒度开始设计,例如每个销售事务,然后根据需要上卷汇总。

这样可以确保数据仓库能够满足各种查询和报表需求。

3. 选择适当的维度:维度是描述数据特征的类别,例如时间、地点、产品等。

在设计事实表时,你需要选择能够描述清楚业务过程的维度信息。

例如,在销售事实表中,你可能需要包含时间维度、客户维度、产品维度和销售渠道维度等。

4. 考虑数据完整性:在设计事实表时,你需要考虑如何确保数据的完整性。

你可以通过添加约束、触发器或使用数据校验程序来实现这一点。

5. 优化性能:在设计和构建事实表时,还需要考虑性能问题。

你可以通过优化索引、分区和使用汇总表等方法来提高查询速度。

6. 反馈和迭代:最后,你需要将设计的事实表应用到实际业务场景中,并根据反馈进行迭代和优化。

以上是事实表设计的步骤。

希望这些步骤能够帮助你成功地构建出一个优秀的数据仓库事实表。

SQL_Server数据仓库相关概念-维度表和事实表概述

SQL_Server数据仓库相关概念-维度表和事实表概述

SQL_Server数据仓库相关概念-维度表和事实表概述基本概念:1.多维数据集:多维数据集是联机分析处理(OLAP) 中的主要对象,是一项可对数据仓库中的数据进行快速访问的技术。

多维数据集是一个数据集合,通常从数据仓库的子集构造,并组织和汇总成一个由一组维度和度量值定义的多维结构。

2.维度:是多维数据集的结构性特性。

它们是事实数据表中用来描述数据的分类的有组织层次结构(级别)。

这些分类和级别描述了一些相似的成员集合,用户将基于这些成员集合进行分析。

3.度量值:在多维数据集中,度量值是一组值,这些值基于多维数据集的事实数据表中的一列,而且通常为数字。

此外,度量值是所分析的多维数据集的中心值。

即,度量值是最终用户浏览多维数据集时重点查看的数字数据。

您所选择的度量值取决于最终用户所请求的信息类型。

一些常见的度量值有sales、cost、expenditures 和production count 等。

4.元数据:不同OLAP 组件中的数据和应用程序的结构模型。

元数据描述OLTP 数据库中的表、数据仓库和数据集市中的多维数据集这类对象,还记录哪些应用程序引用不同的记录块。

5.级别:级别是维度层次结构的一个元素。

级别描述了数据的层次结构,从数据的最高(汇总程度最大)级别直到最低(最详细)级别。

6.数据挖掘:数据挖掘使您得以定义包含分组和预测规则的模型,以便应用于关系数据库或多维OLAP 数据集中的数据。

之后,这些预测模型便可用于自动执行复杂的数据分析,以找出帮助识别新机会并选择有获胜把握的机会的趋势。

7.多维OLAP (MOLAP):MOLAP 存储模式使得分区的聚合和其源数据的复本以多维结构存储在分析服务器计算机上。

根据分区聚合的百分比和设计,MOLAP 存储模式为达到最快查询响应时间提供了潜在可能性。

总而言之,MOLAP 更加适合于频繁使用的多维数据集中的分区和对快速查询响应的需要。

8.关系OLAP (ROLAP):ROLAP 存储模式使得分区的聚合存储在关系数据库的表(在分区数据源中指定)中。

初中必备数学雪花模型

初中必备数学雪花模型

初中必备数学雪花模型在维度建模中,根据事实表和维度表的关系,可以将常见的模型分为星型模型和雪花型模型。

09.1.1 概念解释星型模型是一种多维的数据关系,其组成是一个事实表(Fact Table)一组维表(Dimension Table)每个维表都有一个维作为主键所有这些维的主键组合成事实表的主键,理解为内容的唯一。

事实表的非主键属性称为事实(Fact)它们一般都是数值或其他可以进行计算的数据(便于分析时的聚合操作)示意图说明星型模型是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,所以数据有一定的冗余。

雪花型模型当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。

雪花模型是对星型模型的扩展。

它对星型模型的维表进一步层次化。

原有的各维表可能被扩展为小的事实表,形成一些局部的“层次”区域。

这些被分解的表都连接到主维度表而不是事实表示意图说明通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。

雪花型结构去除了数据冗余。

09.1.2 优缺点一般从4个角度进行比较1、查询性能角度OLTP-DW 环节,由于雪花型要做多个表联接,性能会低于星型架构;DW-OLAP 环节,由于雪花型架构更有利于度量值的聚合,因此性能要高于星型架构。

2、模型复杂度角度星型架构更简单方便处理3、层次结构角度雪花型架构更加贴近OLTP系统的结构,比较符合业务逻辑,层次比较清晰。

TEXT 复制全屏4、存储角度雪花型架构具有关系数据模型的所有优点,不会产生冗余数据,而相比之下星型架构会产生数据冗余。

09.1.3 实践经验根据项目经验,一般建议使用星型模型。

因为在实际项目中,往往最关注的是查询性能问题。

至于磁盘空间一般都不是问题。

当然,雪花型模型的几个前提:在维度表数据量极大,需要节省存储空间的情况下。

或者是业务逻辑比较复杂、必须要体现清晰的层次概念情况下。

维度建模的理解

维度建模的理解

维度建模的理解
维度建模是一种数据建模方法,它将数据按照不同的维度进行分类和组织,以便更好地理解和分析数据。

维度建模的核心思想是将数据按照业务过程进行划分,将数据分为事实表和维度表两部分,以便更好地进行数据分析和决策。

维度建模的优点在于它能够提供更加直观和易于理解的数据模型,使得数据分析和决策更加高效和准确。

维度建模的核心是维度表,它包含了数据的各个维度,如时间、地点、产品等,以及这些维度的属性,如时间的年、月、日等。

维度表的设计需要考虑到数据的可扩展性和灵活性,以便更好地适应业务需求的变化。

事实表是维度建模的另一个重要组成部分,它包含了数据的度量,如销售额、利润等。

事实表和维度表之间通过共享维度进行关联,以便更好地进行数据分析和决策。

事实表的设计需要考虑到数据的粒度和聚合方式,以便更好地满足业务需求。

维度建模的应用范围非常广泛,它可以应用于各种类型的数据分析和决策场景,如销售分析、客户分析、供应链分析等。

维度建模的优点在于它能够提供更加直观和易于理解的数据模型,使得数据分析和决策更加高效和准确。

维度建模是一种非常重要的数据建模方法,它能够提供更加直观和易于理解的数据模型,使得数据分析和决策更加高效和准确。

在实
际应用中,我们需要根据业务需求进行维度表和事实表的设计,以便更好地满足业务需求。

维度表和事实表 例子

维度表和事实表 例子

维度表和事实表例子维度表和事实表是数据仓库中的两个重要概念,用于组织和管理数据。

维度表包含了数据的描述性属性,而事实表则包含了与这些描述性属性相关的数值性数据。

下面列举了10个维度表和事实表的例子,以帮助更好地理解这两个概念。

1. 电商维度表和事实表:- 维度表:商品维度表(包含商品ID、商品名称、商品类型等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:订单事实表(包含订单ID、商品ID、购买数量、销售金额等属性)2. 酒店维度表和事实表:- 维度表:酒店维度表(包含酒店ID、酒店名称、酒店地址等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:客房预订事实表(包含预订ID、酒店ID、客房类型、入住时间、离店时间等属性)3. 人力资源维度表和事实表:- 维度表:员工维度表(包含员工ID、员工姓名、所属部门等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:薪资事实表(包含员工ID、薪资金额、发放日期等属性)- 维度表:物流公司维度表(包含物流公司ID、物流公司名称、物流公司地址等属性)、时间维度表(包含日期、星期、月份等属性) - 事实表:运输事实表(包含物流公司ID、订单ID、运输距离、运输费用等属性)5. 医院维度表和事实表:- 维度表:医院维度表(包含医院ID、医院名称、医院地址等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:门诊事实表(包含医院ID、就诊日期、患者ID、就诊科室、就诊费用等属性)6. 学生维度表和事实表:- 维度表:学生维度表(包含学生ID、学生姓名、班级等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:考试成绩事实表(包含学生ID、考试科目、考试日期、考试成绩等属性)7. 游戏维度表和事实表:- 维度表:游戏角色维度表(包含角色ID、角色名称、角色等级等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:游戏日活跃用户事实表(包含角色ID、日期、登录次数、在线时长等属性)- 维度表:销售人员维度表(包含销售人员ID、销售人员姓名、所属区域等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:销售订单事实表(包含订单ID、销售人员ID、客户ID、销售金额等属性)9. 飞机航班维度表和事实表:- 维度表:航班维度表(包含航班号、起飞机场、到达机场等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:乘客座位预订事实表(包含航班号、日期、乘客ID、座位号等属性)10. 财务维度表和事实表:- 维度表:财务科目维度表(包含科目ID、科目名称、科目类型等属性)、时间维度表(包含日期、星期、月份等属性)- 事实表:财务报表事实表(包含科目ID、日期、金额等属性)以上是10个维度表和事实表的例子,它们分别适用于不同的领域和业务场景。

维度建模

维度建模

维度建模的基本概念及过程摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识;其次,介绍设计维度模型的4个基本步骤;再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓库总线结构、一致性维度、一致性事实。

关键词:维度表;事实表;维度模型设计过程;数据仓库总线结构;一致性维度;一致性事实。

引言: 与流行的说法不同,Ralph Kimball本人并没有定义“维度”和“事实”这样的术语。

术语“维度”与“事实”,最初是20世纪60年代在一个由General Mills与Dartmouth大学主持的联合研究计划中提出的。

70年代,AC Nielsen和IRI都一致地使用这些术语描述他们的数据发布应用,用现在更为准确的话来说,就是关于零售数据的维度数据集市(Data Mart)。

在简明性成为生活方式的潮流之前的长时期内,早期的数据库垄断组织们致力于将这些概念用来简化用做分析的信息。

他们意识到,除非数据库做得简单易用,否则没有人会用它。

因此,在将可理解性和性能作为最高目标的驱动下,产生了维度模型的构造思想。

1 维度表和事实表1.1 事实表事实表是维度模型的基本表,其中如图所示存放有大量的业务性能度量值。

力图将从一个业务处理过程得到的度量值数据存放在单个数据集市。

由于度量值数据压倒性地成为任何数据集市的最大部分,因此应该避免在企业范围内的不同地方存储其拷贝。

用术语“事实”代表一个业务度量值。

可以设想一个作为例子的情形:查询某个客户在某个机构下某个产品合约账户的某个币种的某个时点余额,在各维度值(客户、产品合约、账户、机构、币种、日期)的交点处就可以得到一个度量值。

维度值的列表给出了事实表的粒度定义,并确定出度量值的取值范围是什么。

事实表的一行对应一个度量值,一个度量值就是事实表的一行;事实表的所有度量值必须具有相同的粒度。

最有用的事实是诸如账户余额这样的数字类型为可做加法的事实。

维度表和事实表

维度表和事实表

维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进行分析,或按区域来分析. 这样的按..分析就构成一个维度。

前面的示例就可以有两个维度:类型和区域。

另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性。

下面是两个常见的维度表结构:产品维度表:Prod_id, Product_Name, Category, Color, Size, Price时间维度表:TimeKey, Season, Year, Month, Date而事实表是数据聚合后依据某个维度生成的结果表。

它的结构示例如下:销售事实表:Prod_id(引用产品维度表), TimeKey(引用时间维度表), SalesAmount(销售总量,以货币计), Unit(销售量)上面的这些表就是存在于数据仓库中的。

从这里可以看出它有几个特点:1. 维度表的冗余很大,主要是因为维度一般不大(相对于事实表来说的),而维度表的冗余可以使事实表节省很多空间。

2. 事实表一般都很大,如果以普通方式查询的话,得到结果一般发的时间都不是我们可以接受的。

所以它一般要进行一些特殊处理。

如SQL Server 2005就会对事实表进行如预生成处理等。

3. 维度表的主键一般都取整型值的标志列类型,这样也是为了节省事实表的存储空间。

事实表和维度表的分界线事实表是用来存储主题的主干内容的。

以日常的工作量为例,工作量可能具有如下属性:工作日期,人员,上班时长,加班时长,工作性质,是否外勤,工作内容,审核人。

那么什么才是主干内容?很容易看出上班时长,加班时长是主干,也就是工作量主题的基本内容,那么工作日期,人员,工作性质,是否外勤,工作内容是否为主干信息呢?认真分析特征会发现,日期,人员,性质,是否外勤都是可以被分类的,例如日期有年-月-日的层次,人员也有上下级关系,外勤和正常上班也是两类上班考勤记录,而上班时长和加班时长则不具有此类意义。

数据仓库设计与建模的事实表与维度表设计原则(五)

数据仓库设计与建模的事实表与维度表设计原则(五)

数据仓库设计与建模的事实表与维度表设计原则数据仓库是在企业决策支持系统中扮演重要角色的一种重要技术。

而数据仓库中最关键的两个组件是事实表和维度表。

事实表包含了数值型数据,用于衡量企业的业务指标,而维度表则描述了这些指标的上下文信息。

本文将介绍数据仓库设计与建模的事实表与维度表设计原则,帮助读者在实践中更好地构建数据仓库。

一、合理选择事实在设计事实表时,首要任务就是确定要进行度量的指标。

合理选择事实关系到数据仓库的有效性和准确性。

选择的事实应满足以下原则:1. 直观性:事实应能直接衡量企业业务活动的结果,如销售额、利润等。

避免选择过于抽象或难以理解的事实。

2. 准确性:选择事实应能够准确地反映实际情况,尽量避免因为计算方法不当或指标选择不合理导致数据失真。

3. 目标导向性:事实应与企业的战略目标和决策需求紧密相关。

关注核心业务指标,避免收集过多的冗余事实。

二、定义正确的维度维度表描述了与事实表相关的上下文信息,帮助我们更好地理解和分析事实数据。

设计维度表时应注意以下原则:1. 清晰明了:维度应具有清晰的业务含义,能够被用户所理解。

避免选择过于模糊或抽象的维度。

2. 层次性:维度中的属性应能够形成层级关系。

例如,时间维度可以按年、季度、月、日等进行层级划分,以便用户可以按需进行汇总和分析。

3. 稳定性:维度应是相对稳定的,避免频繁变动和更新。

这样可以确保数据仓库的一致性和稳定性,方便用户在不同时间点之间进行对比和分析。

4. 可扩展性:维度应具备良好的扩展性,能够满足日益增长的业务需求。

设计时要考虑到未来可能需要新增的属性,以便系统可以轻松扩展。

三、保持一致性在数据仓库中,事实表和维度表之间需要建立关联关系,以实现数据的查询和分析。

保持一致性是设计事实表和维度表的重要原则之一:1. 主键一致性:事实表和维度表中的主键应相互匹配,以确保数据的一致性和完整性。

主键的定义应满足唯一性和稳定性的要求。

2. 命名一致性:在设计事实表和维度表时,要保持命名的一致性。

事实表的三种类型

事实表的三种类型

事实表的三种类型维度建模中,事实表分为三类:事务事实表,周期快照事实表,累计事实表,他们维度⼀致,但功能要求和描述的业务事实存在巨⼤差异。

1. 事务事实表事务事实表记录事务层⾯的事实,保存最为原⼦的数据,其数据在事务发⽣后发⽣,粒度为每⼀⾏数据。

其⼀旦提交不能修改,增量更新。

事实表⼀般围绕着度量来建⽴,当度量产⽣的时候,事实记录就⽣成了。

度量可以是销售数量、交易流⽔值、⽉末节余等数值。

⼀般会根据数据度量以及提前规定好的⼀致性维度来进⾏统计等⼯作。

事务的数字度量分为三种:1)可加事实可加事实指的是该度量可以按照和事实表关联的任⼀维度进⾏汇总。

⽐如商品的单价,可以按照品类维度进⾏汇总,按照店铺维度进⾏汇总等等。

2)半可加事实指的就是该度量在某些维度下不可进⾏汇总,或者说汇总起来没有意义,⽐如说价差额,价差额在时间维度下的汇总就没有意义。

3)不可加事实指的是该度量在所有与该事实表关联的维度下都不可进⾏汇总,⽐如说⽐率型数据2.周期快照周期快照事实事实表表周期快照表以具有规律性、可预见时间的记录事实,它统计的是间隔周期内的度量统计,如历史⾄今、⾃然年⾄今、季度⾄今等等,其更新⽅式同事务事实表,采⽤增量更新。

周期快照事实表粒度是每个时间段⼀条记录,通常⽐事务事实表的粒度要粗,是在事务事实表之上建⽴的聚集表,维度⽐事务事实表要⼩,但记录的事实⽐事务事实表更多,事务事实表是稀疏表,周期快照表是稠密表。

1)什么是稀疏表,什么是稠密表? 稀疏表:当天只有发⽣了操作才会有记录 稠密表:当天没有操作也会有记录,便于下游使⽤事务事实表是 稀疏的,只有当天发⽣的业务过程,事实表才会记录该业务过程的事 实, 如下单、⽀付等;⽽快照事实表是稠密的,⽆论当天是否有业务过程发 ⽣,都会记录⼀⾏,⽐如针对卖家的历史⾄今的下单和⽀付⾦额,⽆论 当天卖家是否有下单⽀付事实,都会给该卖家记录⼀⾏就⽐如⽤户周⼀下单3单,周⼆没有下单,但系统仍在周⼆分区⾥记录该周下单3单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档