一、无事实事实表简介 在多维数据仓库建模中,有一种事实表叫做“无事实的事实表”。普通事实表中,通常会保存若干维度外键和多个数字型度量,度量是事实表的关键所在。...然而在无事实的事实表中没有这些度量值,只有多个维度外键。表面上看,无事实事实表是没有意义的,因为作为事实表,毕竟最重要的就是度量。但在数据仓库中,这类事实表有其特殊用途。...这时,通过建立促销范围事实表,将商场需要促销的商品单独建立事实表保存,然后通过这个促销范围事实表和销售事实表即可得出哪些促销商品没有销售出去。 ...二、建立新产品发布的无事实事实表 在tds模式中新建一个产品发布的无事实事实表product_count_fact,该表中只包含两个字段,分别是引用日期维度表和产品维度表的外键,同时这两个字段也构成了无事实事实表的逻辑主键...无事实事实表为数据仓库设计提供了更多的灵活性。
事实表与维度表 前文介绍了一维表和二维表的异同及相互转换 今天再来解释一下事实表与维度表 先来看下表。回忆下,这是一维表二维表?...单行记录就能锁定全部信息,个别列存在数量重复,没二话,显然是一维表 那是不是结账系统里的订单表就是这副样子?...你还别笑,不管是谁第一次接触表格,可不就这样的修改的吗 但系统里的一维表,往往有成千上万行,靠人工查找修改,无疑愚公移山 那“查找替换”呢?...这里只是打个花式比喻,不必较真) 上图可见,流水表里把大量汉字换成字母/数字编码,将对表格大小起到重要作用 修改信息时也只要在维度表定位、变更一条记录即可,而不必在流水表里进行全表扫描。...,那“事实表”也就不难理解了 事实表:表格里存储了能体现实际数据或详细数值,一般由维度编码和事实数据组成 维度表:表格里存放了具有独立属性和层次结构的数据,一般由维度编码和对应的维度说明(标签)组成 现实工作中
一、前言 本文是《分布式数据仓库最佳实践》系列文章的第四部分第21篇《事实表设计》,针对事实表设计专题进行详细论述,内容包括事实表的类型划分,各种类型的事实表应用的场景、具有的特性和典型的案例。...配套视频课程地址:网易云课堂 正文 2.1 事实表设计概述 ?...2.2 事实表设计详解 首先,明确第一个问题:事实表是分类型的,既包括包含明确可度量指标的事实表,如订单事件;也包括没有明确的可度量数值的事实表,如网民的对网站的一次访问。...再次,事实表的设计,要基于自己业务特性和场景特点进行模型的选择,以使用为准,同时选择了某种事实表以后,伴随的问题就是要接受其固有特性。...三、未完待续 本文是《分布式数据仓库最佳实践》系列文章的第四部分第21篇《事实表设计》,针对事实表设计专题进行详细论述,内容包括事实表的类型划分,各种类型的事实表应用的场景、具有的特性和典型的案例。
这时就要用到无事实的事实表技术。使用此技术可以通过持续跟踪产品的发布来计算产品的数量。可以创建一个只有产品(计什么数)和日期(什么时候计数)维度代理键的事实表。...之所以叫做无事实的事实表是因为表本身并没有度量。 ...产品发布的无事实事实表 本节说明如何实现一个产品发布的无事实事实表,包括新增和初始装载product_count_fact表。...图(五)- 12-1 执行清单(五)-12-1里的脚本创建产品发布日期视图和无事实事实表。...“杂项维度”中的定期装载做了两点修改:“清空过渡表”作业项加了清空product_count_fact表;把初始装载产品数量事实表的步骤合并到了“装载事实表(定期)”作业项里。
事务事实表的粒度确定是事务事实表设计过程中的关键步骤,一般都会包含可加的度量和事实。理解概念的最佳途径无疑是实际的例子,因此下面将结合超市零售业务以及维度建模的四个环节来说明事务事实表。...在事实表的设计中,一个常见的原则是只存放比例的分子和分母,因此比例的计算是和业务强,业务逻辑可能非常的复杂,所以一般不加入事实表中。...至此,我们也完成了超市零售事务的事实表和维度表的设计,超市零售事务事实表以及相关的维度表如图所示: ?...基于上述设计的周期快照事实表及相关维度如图所示: ? 累计快照事实表 事实表的第三种类型是累计快照事实表,相比前两者,累计快照事实表没那么常见,但是对于某些业务场景来说非常有价值。...总结 在经典的维度建模事实表设计中,事实表将仅存储维度表外键、选定的度量以及退化维度等,例如我们前面提到的超市零售事务事实表。
当同时拥有事实记录和正确的当前维度行时,就能够从容地首先维护维度键,然后在对应的事实表行中使用这些最新的键。然而,各种各样的原因会导致需要ETL系统处理迟到的事实数据。...二、修改数据仓库表结构 在“HAWQ取代传统数仓实践(十三)——事实表技术之周期快照”中建立的月销售周期快照表,其数据源自已经处理过的销售订单事务事实表。...因此为了确定事实表中的一条销售订单记录是否是迟到的,需要把源数据中的登记日期列装载进销售订单事实表。为此在要销售订单事实表上添加登记日期代理键列。...四、修改装载周期快照事实表的函数 “HAWQ取代传统数仓实践(十三)——事实表技术之周期快照”中创建的fn_month_sum函数用于装载月销售周期快照事实表。...由于迟到事实的出现,需要将事务事实表中的数据划分为两类:上月的周期快照和更早的周期快照。
事实表 每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如现金登记事务所产生的数据,事实数据表通常包含大量的行。...事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度表的主键,而维度表包含事实记录的特性...一般来说,一个事实数据表都要和一个或多个纬度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。...维度表 维度表可以看作是用户来分析数据的窗口,纬度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构...事实表就是销量表,维度表就是地区表。
因此,数据仓库中事实表的设计应该依赖于业务系统,而不受可能产生的最终报表影响。除数字类型的度量外,事实表总是包含所引用维度表的外键,也能包含可选的退化维度键或时间戳。...对订单的每种状态新增记录只是处理这种场景的多种设计方案之一。如果里程碑的定义良好并且不会轻易改变,也可以考虑在源订单事务表中新增每种状态对应的数据列,例如,新增8列,保存每个状态的时间戳和数量。...累积快照的设计和管理与其它两类事实表存在较大的差异。所有累积快照事实表都包含一系列日期,用于描述典型的处理工作流。...无事实事实表是没有任何度量的事实表,它本质上是一组维度的交集。用这种事实表记录相关维度之间存在多对多关系,但是关系上没有数字或者文本的事实。无事实事实表为数据仓库设计提供了更多的灵活性。...用这种事实表记录相关维度之间存在多对多关系,但是关系上没有数字或者文本的事实。无事实事实表为数据仓库设计提供了更多的灵活性。 迟到的事实指的是到达ETL系统的时间晚于事务发生时间的度量数据。
目录 1、三种事实表概述 2、三种事实表对比 3、事实表设计 8 大原则 4、事实表设计方法 第一步:选择业务过程及确定事实表类型 第二步:声明粒度 第三步:确定维度 第四步:确定事实 ---- 事实表作为数据仓库维度建模的核心... 业务过程变更时更新 3、事实表设计 8 大原则 原则 1:尽可能包含所有与业务过程相关的事实 分析哪些事实与业务过程相关,是设计过程中非常重要的关注点; 在事实表中,尽量包含所有与业务过程相关的事实...每个维度和事实必须与所定义的粒度保持一致; 设计事实表时,粒度定义越细越好,一般从最低级别的原子粒度开始; 因为原子粒度提供了最大限度的灵活性,可以支持无法预期的各种细节层次的用户需求; 原则...、控制聚合层次、排序数据、定义主从关系等; 易用性:对事实表,更较少关联操作、过滤查询、控制聚合层次、排序数据、定义主从关系等; 在 Kimball 的维度建模中,通常按照星形模型的方式设计,通过事实表的外键关联专门的维表...,这种方式来获取维度,谨慎使用退化维表;这与大数据领域的事实表设计不一样; 思路:通过增加冗余存储,减少计算开销,提高使用效率; 4、事实表设计方法 Kimball 的维度模型设计 4 步法:选择业务过程
事实表:每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如销售商品所产生的数据,与软件中实际表概念一样 维度:说明数据,维度是指可指定不同值的对象的描述性属性或特征。...度量:事实表和维度交叉汇聚的点,度量和维度构成OLAP的主要概念,这里面对于在事实表或者一个多维立方体里面存放的数值型的、连续的字段,就是度量。
设计出一套真正适合分布式数据仓库的数据存储模型。 二、事实表设计基础 事实表记录发生在现实世界中的操作型事件,其所产生的可度数值。...事实表的设计完全依赖于物理活动,不受可能产生的最终报表的影响。事实表中,除数字度量外,事实表总是包含外键,用于关联与之相关的维度,也可以包含退化的维度键和日期/时间戳。...三、分布式模式-维度建模新原则 (1)以值代键:针对键值唯一的维表,除非必要,否则不引入维表,如IP地址维表,采用IP作为维表的主键,事实表中存储IP值; (2)合理分表:传统关系型数据仓库存在多表整合的冲动...,如上图Event事实表,各种Acount Ind,Finance Ind等,用来扩展表的通用性,试图把所有的数据都存储到一张表 中。...分布式数据仓库的设计,恰恰相反,因为单表数据规模的问题,如果要满足分析和处理的性能,合理的按照业务进行数据的分表存储。如财务相关事件、账户相关事件,单独成表。更有利于数据的计算和分析。
本文目录如下: 一、事实表基础 二、事实表设计规则 三、事实表设计方法 四、有事实的事实表 五、无事实的事实表 六、聚集型事实表 ---- 正文开始: 每个数据仓库都包含一个或者多个事实数据表。...一、事实表基础 1. 事实表特征 事实表作为数仓维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和业务过程有关的度量。...四、有事实的事实表 有事实表分为三种类型 :事务事实表、周期快照事实表和累积快照事实表。 1. 事务事实表 单事务事实表 针对于每个业务过程设计一个事实表,方便每个业务过程进行独立分析研究。...设计实例: 单维度的每天快照事实表 确定粒度、确定维度 混合维度的每天快照事实表 确定粒度、确定维度、确定状态度量 全量快照事实表 相比单维度的快照事实表,多了一些冗余维度。...设计准则: 同事务事实表设计一样。 五、无事实的事实表 在维度模型中,事实表用事实来度量业务过程,不包含事实或度量的事实表称为无事实的事实表。虽然没有明确的事实,但可以用来支持业务过程的度量。
维度建模理论之事实表一、事实表概述事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。其包含与该业务过程有关的维度引用(维度表外键)以及该业务过程的度量(通常是可累加的数字类型字段)。...2、设计流程设计事务事实表时一般可遵循以下四个步骤。...4)确定事实此处的“事实”一词,指的是每个业务过程的度量值(通常是可累加的数字类型的值,例如:次数、个数、件数、金额等)。经过上述四个步骤,事务型事实表就基本设计完成了。...2、设计流程1)确定粒度周期型快照事实表的粒度可由采样周期和维度描述,故确定采样周期和维度后即可确定粒度。采样周期通常选择每日。...2、设计流程累积型快照事实表的设计流程同事务型事实表类似,也可采用以下四个步骤,下面重点描述与事务型事实表的不同之处。选择业务过程→声明粒度→确认维度→确认事实。
所谓的事实表和维度表技术,指的就是如何和构造一张事实表和维度表,是的事实表和维度表,可以涵盖现在目前的需要和方便后续下游数据应用的开发。 事实表,就是一个事实的集合。...我们整理了维度表和事实表之后,我们需要形成一个总线矩阵。总线矩阵用于设计数据仓库架构的基本工具,矩阵的行表示业务过程,列代表维度。矩阵中的点表示维度与给定的业务过程是否存在关系,如下图。...图片形成这样的一个架构之后,我们的数据仓库的结构分层,和里面的数据表设计完成了,就可以进行同步和开发了。...大数据与传统数据库的区别数据仓库(03)数仓建模之星型模型与维度建模数据仓库(04)基于维度建模的数仓KimBall架构数据仓库(05)数仓Kimball与Inmon架构的对比数据仓库(06)数仓分层设计数据仓库...(07)数仓规范设计数据仓库(08)数仓事实表和维度表技术 数据仓库(09)数仓缓慢变化维度数据的处理数据仓库(10)数仓拉链表开发实例数据仓库(11)什么是大数据治理,数据治理的范围是哪些数据仓库(12
背景 数据同步方式 事实表类型及使用场景 事实表设计合并依据 总结 背景 在构建数据仓库总线矩阵完成后,可着手事实表和维度表的设计。...同时,因上游业务系统老旧,表设计水平、使用场景等因素,或并不是都是标准3NF范式设计,将多个业务过程事件发生存储在一张表的情况,对于此种情况做事实表设计时,根据使用场景可能会进行表拆分考虑,这里不再展开...事实表设计是需识别业务过程、探查数据粒度、维度、事实等几个步骤,再根据数据粒度,数据更新方式、数据量大小和使用场景等因素判断是否进行多业务过程或表进行合并,再选择合适的事实表类型进行模型设计。...如用户全流程表 事实表设计合并依据 在进行事实表设计或进行数仓模型评审是尽量可能将分散在各个业务系统中相同或相似的业务过程进行整合,关于事实表是否应该对多种表进行合并或整合,无论是纵向合并还是横向合并众说纷纭...总结 本文从数据同步方式分类,根据数据更新方式等因素进行事实表设计时,要选择合适事实表类型,关于事实表是否应该合并给出几点考虑,当然维度表设计也要考虑些原则如维度表平面化,提高易用性,减少用户使用复杂度
KDT#13 可以作为维度表使用的事实表 事实表从粒度的角度分为三种,分别是交易粒度事实表、周期快照事实表和累计快照事实表。 交易粒度事实表能提供某个确切时刻的描述信息。...这是一个典型的记录的度量事实都是文本型描述信息的事实表。这样的事实表和维度表之间的区别并不明显。 这个事实表中有三个是关联到普通维度表的外键,分别是变更日期、代理和交易类型。...帐户号(SK)是帐户的代理键,也是这个事实表的主键,它标识了这个事实表中的每一次变化。 我们可以将该事实表中的帐户号代理键做TYPE 2型缓慢变化维处理,并将它关联到其他事实表作为外键。...) 对后一个事实表进行分析,其中的一条记录可以准确的对应到前一张事实表中相应时点的帐号信息上,即我们可以得到每一次交易时点时帐户对应的客户信息。...我们会发现,前一张事实表和维度表并没有什么差别。
本篇说明多维数据仓库中常见的事实表技术。我们将讲述五种基本事实表扩展技术,分别是周期快照、累积快照、无事实的事实表、迟到的事实和累积度量。...因此,数据仓库中事实表的设计应该依赖于业务系统,而不受可能产生的最终报表影响。除数字类型的度量外,事实表总是包含所引用维度表的外键,也能包含可选的退化维度键或时间戳。...对订单的每种状态新增记录只是处理这种场景的多种设计方案之一。如果里程碑的定义良好并且不会轻易改变,也可以考虑在源订单事务表中新增每种状态对应的数据列,例如,新增8列,保存每个状态的时间戳和数量。...用这种事实表记录相关维度之间存在多对多关系,但是关系上没有数字或者文本的事实。无事实事实表为数据仓库设计提供了更多的灵活性。...用这种事实表记录相关维度之间存在多对多关系,但是关系上没有数字或者文本的事实。无事实事实表为数据仓库设计提供了更多的灵活性。 迟到的事实指的是到达ETL系统的时间晚于事务发生时间的度量数据。
事实表设计的八大原则 原则一 :尽可能包含所有与业务过程相关的事实 事实表设计的目的是为了度量业务过程,所以分析哪些事实与业务过程有关是设计中非常重要的关注点。...原则二 :只选择与业务过程相关的事实 在选择事实时,应该注意只选择与业务过程有关的事实。比如在订单的下单这个业务过程的事实表设计中 ,不应该存在支付金额这个表示支付业务过程的事实。...在该事实表的设计中,票支付金额和票折扣金额两个事实与表定义的粒度一致,并且支持按表的任意维度汇总,可以添加进该事实表中。...原则八 :使用退化维度提高事实表的易用性 Kimbal 维度建模中,通常按照星形模型的方式来设计,对于维度的获取采用的是通过事实表的外键关联专门的维表的方式,谨慎使用退化维度。...而在大数据领域的事实表设计中,则大量采用退化维度的方式,在事实表中存储各种类型的常用维度信息。
一、建立累积度量事实表 执行下面的脚本创建month_end_balance_fact事实表,用来存储销售订单金额和数量的月累积值。...(10,2), month_end_quantity_balance int ); comment on table month_end_balance_fact is '累积度量事实表...下面显示了初始装载month_end_balance_fact表的脚本。...五、查询 事实表中的数字度量值可划分为可加、半可加、不可加三类。可加性度量可以按照与事实表关联的任意维度汇总,就是说按任何维度汇总得到的度量和是相同的,事实表中的大部分度量属于此类。...如果重点考虑迟到事实数据和HAWQ无法行级更新的限制,也许使用查询视图方式实现累积度量是更佳选择。
周期快照事实表通常包含许多数据的总计,因为任何与事实表时间范围一致的记录都会被包含在内。...在这些事实表中,外键的密度是均匀的,因为即使周期内没有活动发生,通常也会在事实表中为每个维度插入包含0或空值的行。 周期快照是在一个给定的时间对事实表进行一段时期的总计。...因此,好的做法是将事务型事实表作为一个基石事实数据,以此为基础,向上逐层建立需要的快照事实表。 ...实际装载时,月销售周期快照事实表的数据源是已有的销售订单事务事实表,而不需要关联产品维度表。...之所以可以这样做,是因为总是先处理事务事实表,再处理周期快照事实表,并且事务事实表中的产品代理键就是当时有效的产品描述。
领取专属 10元无门槛券
手把手带您无忧上云