Skip to main content

moregeek program

数据中台中事实表设计概述_枫叶飘飘的博客-多极客编程

事实表是统一数仓层建设的主要产出物,统一数仓层绝大部分表都是事实表。一般来说事实表由两部分组成:一部分是由主键和外键组成的键值部分,另一部分是用来描述业务过程的事实度量。事实表的键值部分确定了事实表的粒度,事实表通过粒度和事实度量来描述业务过程。事实表的外键总是对应某个维度表的主键,实际建设和试用过程中,为了提升事实表的易用性和性能,不仅会存储维度主键,还会把关键的维度属性存储在实施表中。这样事实表就包含表达粒度的键值部分、事实度量及退化的维度属性。一切数据应用和分析都是围绕事实表来展开的,稳定的数据模型能大幅提高数据复用性。

在Kimball的维度建模理论中主要定义了事务事实表、周期快照事实表、累积快照事实表三种类型的事实表。

  • 事务事实表:事务事实表描述业务过程事务层面的事实,每条记录代表一个事务事件,保留事务事件活动的原始内容。事务事实表中的数据在事务事件发生后记录,一般记录后数据就不再进行更改,其更新方式为增量更新。事务事实表相对其他事实表保存的数据粒度更细,可以通过事务事实表对事务行为进行详细分析。
  • 周期快照事实表:周期快照事实表以具有规律性、可预见的时间间隔产生快照来记录事实,每行代表某个时间周期的一条记录,记录的事实是时间周期内的聚集事实值或状态度量。周期快照事实表的内容一般在所表达的时间周期结束后才会产生,一般记录后数据就不再更改,其更新方式为增量更新。周期快照事实表一般是建立在事务事实表之上的聚集,维度比事务事实表少,粒度比事务事实表粗,但是由于对事实进行了多种形式的加工从而产生了新的事实,故一般事实会比事务事实表多。
  • 累计快照事实表:累积快照事实表覆盖一个事务从开始到结束之间所有的关键事件,覆盖事务的整个生命周期,通常具有多个日期字段来记录关键事件时间点。周期快速事实表涉及的多个事件中任意一个的产生都要做记录,由于周期快照事实表涉及的多个事件的首次加载和后续更新时间是不确定的,因此在首次加载后允许对记录进行更新,一般采用全量刷新的方式更新。

累计快照事实表一般用于追踪某个业务的全生命周期及状态转换,比如交易业务,涉及下单、支付、发货、确认收货,这些相关事件在不同的事务事实表中,通过事务事实表很难看到不同事件之间的转化及状态变化,通过累计快照事实表可把相关事件串起来放在一条记录中,这样就很容易解决了。 不管哪种类型的事实表,设计方法都类似,事实表设计可以遵循以下步骤:

第一步:确定业务过程。

企业业务是由一个个业务过程组成的,事实表就是为了记录这些业务过程产生的事实,以便还原任意时刻的业务运转状态。所以设计事实表,第一步就是确定实施所要表达的是哪一个或者几个业务过程。笔者理解业务过程是企业活动事件,比如注册、登录、下单、投诉等都是业务过程,最基本的是每一个业务过程对应一张事实表,这样最容易理解。但是实际开发过程中,业务过程和事实表会存在多对多的关系。

第二步:定义粒度。

不管事实表对应一个还是多个业务过程,粒度必须是确定的,每个事实表都有且只能有唯一的粒度,粒度是事实表的每一行所表示的业务含义,是事实的细节级别。在实际设计过程中,粒度与主键等价,粒度更偏向业务,而主键是站在技术角度说的。虽然粒度在最终的事实表中很难被体现,但是定义粒度是必不可少的步骤,这样可避免整个事实表的业务含义模糊。

第三步:确定维度。

定义粒度之后,事实表每一行的业务含义就确定了。那么业务人员会站在哪些角度来描述事实度量?这就要确定维度了,常见的维度有时间、区域、客户、产品、员工等。维度依附于粒度,是粒度的环境描述。

第四步:确定事实。

事实就是事实表度量的内容,也就是业务过程产生的事实度量的计算结果,比如注册量、登录次数、交易金额、退款量等。事实表的所有事实度量都与事实表所表达的业务过程相关,所有事实必须满足第二步所定义的粒度。

第五步:冗余维度属性。

事实表的设计要综合考虑数据来源和使用需求,在满足业务事实记录的同时也要满足使用的便利性和性能要求。大数据时代,事实表记录数动辄亿级,甚至数十亿、数百亿,维表也有可能达到亿级甚至更多。利用标准维度模型会经常出现维表与事实表关联的情况,这种对亿级表的关联计算,在性能上是灾难性的。为了满足业务需求,降低资源消耗,建议适当冗余维度属性数据到事实表,直接利用事实表就可以完成绝大部分业务的使用需求,这样下游使用时可减少大表关联,提升效率。所以大数据时代,适当进行维度冗余是可取的。

©著作权归作者所有:来自51CTO博客作者key_3_feng的原创作品,请联系作者获取转载授权,否则将追究法律责任

caxa 3d实体设计 2022软件安装包和安装教程_乐乐软件管家的博客-多极客编程

CAXA 3D实体设计 2022软件简介:CAXA 3D实体设计 2022是北京数字大方科技有限公司推出的最新专业三维设计软件。它集创新设计、工程设计、协同设计等多种不同功能于一体,可为用户提供专业的三维设计、分析仿真、数据管理、专业工程图纸等功能,可满足用户在产品开发过程中的各种不同使用需求。 CAXA 3D实体设计是一个非常好的专业设计软件,软件页面简洁美观,操作特点易学易用。无论您是经验丰富

爱番番企业查询结果优化实践_百度geek说的博客-多极客编程

作者 | summer导读:爱番番企业查询汇集了全网2亿+企业多维度全方位信息,使用开源全文搜索引擎Elasticsearch(下文简称ES)作为搜索平台,致力于让用户更快更准的找到所需企业,但怎样能让用户搜索到满意的符合预期的结果呢?本文将会讲述爱番番企业查询在检索结果优化方面的实践,期望与大家一同交流。全文3943字,预计阅读时间10分钟。01 初识数据同步,平台搭建省略,咱们直奔主题,本文中

数字孪生智慧选煤厂:数据监控赋能矿山高效生产_图扑-数字孪生的博客-多极客编程

国家“十四五”规划,中国要实现“3060”目标,需要优化产业结构和能源结构。煤炭是我国重要的基础能源,为国民经济和社会发展提供了可靠的能源保障。在智能化发展大潮之下,煤炭行业亟待借势转型。图扑软件应用自主研发的 HT for Web 产品,搭建了选煤厂区建筑及生产设备、管线等设施的三维场景,将生产数据采集、安全监测监控与生产时空有机结合,构建了集智能巡检、设备安全监测、预警功能、企业管理于一体的三

ssl和tls協議如何提供身份驗證、機密性和完整性_密信mesign的博客-多极客编程

SSL 和 TLS 協議使兩方能夠相互識別和驗證,並以機密性和數據完整性進行通信。 SSL 和 TLS 協議通過 Internet 提供通信安全性,並允許客戶端/服務器應用程序以保密和可靠的方式進行通信。這些協議有兩層:記錄協議和握手協議,它們位於 TCP/IP 等傳輸協議之上。它們都使用非對稱和對稱加密技術。SSL 或 TLS 連接由成為 SSL 或 TLS 客戶端的應用程序啟動。接收連接的應用

ipv6报文头深度解析_枫叶飘飘的博客-多极客编程

IPv6报文由IPv6基本报文头、IPv6扩展报文头以及上层协议数据单元3部分组成。上层协议数据单元一般由上层协议报文头和它的有效载荷构成,上层协议数据单元可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。1、IPv6基本报文头IPv6基本报文头有8个字段,固定大小为40 Byte,每一个IPv6数据报都必须包含基本报文头。基本报文头提供报文转发的基本信息,由转发路径上的所有设备解析。I

docker入门学习_雍州无名的博客-多极客编程

1.运行第一个docker容器docker run -i -t ubuntu /bin/bash参数说明:-i, --interactive=false, 打开STDIN,用于控制台交互-t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false-d, --detach=false, 指定容器运行于前台还是后台,默认为false首先,docker run -it ubun

unity解析csv或者txt配置表_幻世界的博客-多极客编程

欢迎加入Unity业内qq交流群:956187480制表转存csv或txt public static Dictionary<string, Dictionary<string, string>> LoadExcelFormTxt(string cfgName) { TextAsset tw = Resources.Load("Cfg/" + cfgNa

unity接入高德定位sdk简单三步无需与安卓工程交互_幻世界的博客-多极客编程

欢迎加入Unity业内qq交流群:956187480 一:高德定位有效key的获取参考官方文档地址:​​获取有效key的详细流程​​注意拿到的key确定是正式的,如果只是测试的话就不能运用到生产环境二: sdk的使用1.把下载下来的sdk下的jar包放进unity的Plugins<Android<    AMap_Location_V4.2.0_20180809.jar2.合并配置An

ugeek大咖说 | 顺丰科技:全链路压测中的可观测性实践_mb625d3d7a6c262的博客-多极客编程

导语UGeek大咖说是优维科技为技术爱好者研讨云原生技术演进趋势而创办的系列活动,邀请一线互联网大厂的核心骨干主讲,分享原厂实践。本年度主题为可观测,我们希望通过一场场有趣、有料、有深度的活动,让运维圈的小伙伴聚集在一起,深度交流与学习。一月一期,不见不散!9月27日,UGeek大咖说第九期圆满结束,此次活动特邀到顺丰科技应用架构高级工程师——李卓做客直播间,为我们讲解全链路压测中的可观测性实践。

ipv6报文头深度解析_枫叶飘飘的博客-多极客编程

IPv6报文由IPv6基本报文头、IPv6扩展报文头以及上层协议数据单元3部分组成。上层协议数据单元一般由上层协议报文头和它的有效载荷构成,上层协议数据单元可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。1、IPv6基本报文头IPv6基本报文头有8个字段,固定大小为40 Byte,每一个IPv6数据报都必须包含基本报文头。基本报文头提供报文转发的基本信息,由转发路径上的所有设备解析。I

【9.24-9.30】博客精彩回顾-多极客编程官方账号的博客-多极客编程

一、优秀文章推荐1.​​TCP 5连问,你能抗到第几轮?​​2.​​一起学做鸿蒙“羊了个羊”​​3.​​oracle拨云见日第9篇之Oracle10.2.0.1升级11.2.0.4.3​​4.​​行为型设计模式之观察者模式​​5.​​Python基础(五) | 函数及面向过程编程详解​​6.​​数据结构重点知识汇总​​7.​​Dubbo 泛化调用在vivo统一配置系统的应用​​8.​​基于Ant

db2 日志_清晨的博客-多极客编程

1、日志的机制与作用2、日志文件命名数据库管理器使用编号方案来命名日志文件归档日志的编号方案以S0000000.LOG开始,直到S9999999.LOG如果发生以下情况,数据库管理器将复位到S0000000.LOG-数据库配置文件更改为启用前滚恢复-数据库配置文件更改为禁用前滚恢复-已使用了S9999999.LOG复用日志文件名3、日志的类型主日志-数据库被激活后立即分配辅助日志-辅助日志在主日志