数据仓库—维度建模—事实表设计

事实表

事实表是数据仓库中的核心表,用于记录与业务过程相关的事实信息,是进行数据分析和挖掘的主要数据来源。

在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,而这个过程就产生了一个事实表,存储了每一个可度量的事件,所以事实表本质上是反映一个个事件的,例如下单事件,度量就是下单的金额,事实表的特点就是增长迅速,且主要以数值进行记录,或者是以其他信息进行记录

这里补充一下,其实一个操作事件往往有多个维度,举个例子,下单操作有下单行为的主体也就是用户,下单的对象也就是商品,还有下单的时间等,这些都是不同的维度表

在构建数据仓库总线矩阵完成后,可着手事实表和维度表的设计,关于总线矩阵可以参考数仓建模—总线矩阵

数仓总线矩阵里每个业务过程都会生成至少一张事实表(识别业务过程的本质就是识别要构建的事实表),因为有可能一个原子事件涉及多张表的情况。同时,因上游业务系统老旧,表设计水平、使用场景等因素,或并不是都是标准3NF范式设计,将多个业务过程事件发生存储在一张表的情况,对于此种情况做事实表设计时,根据使用场景可能会进行表拆分考虑。

  1. 对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实;

  2. 对于多事务事实表,在同一个事实表中反映多个业务过程。

  3. 还有一种就是一个业务过程有多个事实表

多个业务过程是否放到同一个事实表中,首先需要分析不同业务过程之间的相似性和业务源系统。还会考虑使用场景、数据共同项、数据产出时效、数据逻辑变动频率、数据量、数据安全性等因素,再决定是否适合放到同一个事务事实表中。

事实表设计是需识别业务过程、探查数据粒度、维度、事实等几个步骤,再根据数据粒度,数据更新方式、数据量大小和使用场景等因素判断是否进行多业务过程或表进行合并,再选择合适的事实表类型进行模型设计

数据同步方式

在进行表设计之前需要进行数据探查,如数据粒度、字段是否在使用、字段是否为空、记录是否完整、数据更新方式,即粒度更新方式,所谓粒度,就是表中一行记录代表什么,即一个主体何时何地为何发生了什么事件。再根据数据量大小、不同粒度更新方式,可分为以下三种增量、全量和合并数据同步方式:

  • 增量:流水表只追加,记录无更新无删除,数据量小可以全量,数据量大一般情况是增量抽取方式(考虑未来数据量的变化)

  • 全量:存在数据记录更新 其实这就是快照事物事实表

  • 合并:存在数据记录删除(合并ETL工具集成可直接使用,不集成抽取后处理也行)

对于无更新无删除记录流水表使用增量、全量都可以,可依据数据量大小来选,因为增量表分区表当成全量表使用,分区条件限定为从历史到当前;对于存在数据记录更新的,可使用全量抽取,否则会导致数据抽取不全或数据存在重复;对于数据记录删除的,需合并之前历史数据,否则会数据丢失,无法反应历史变化的特性。

事实表的度量

  • 可加

可以进行任意维度下的累加

  • 半可加

每个学生的各个科目的成绩是可加的,但是全班的各个科目进行累加是没有意义的

不可加

需要注意不可加的在任何情况下都是不可加的,比例或者比率是只针对该行有意义,直接累加无意义

这个其实是比较常见的一种情况,但是容易被忽略,也就是说不是所有的事实表都是可度量的,也就是记录了数值,例如用户的发言、评论等等。

事实表的设计

在进行事实表设计或进行数仓模型评审是尽量可能将分散在各个业务系统中相同或相似的业务过程进行整合,但也存在这个分拆的设计,例如我们的业务系统的表设计的并不好,将多个业务过程放在了一张表里,这个时候我们可能就需要做拆

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写教程

原文链接:ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601506&idx2&sn5dae3fdc3e188e81b8a6142c5ab8c994&chksmfa820c85cdf58593356482880998fc6eb98e6889b261bf621e1d…

Git 实用技巧2——新建空白分支 | 重命名分支 | 回退到历史 commit

git version 2.39.2.windows 1. 新建空白分支 参考:Git - git-switch Documentation: https://git-scm.com/docs/git-switch/zh_HANS-CN 使用 --orphan 参数,创建一条不基于任何现有提交的空白分支。其初始提交(即 HEAD)不指向任…

箭头函数多个函数体

当箭头函数需要多个语句组成函数体时,需要使用花括号 {} 将多个语句包裹起来,并且需要显式地使用 return 关键字返回值。下面是一个包含多个函数体语句的箭头函数示例:‘ var greet name > { var greeting "Hello, "; …

了解在 Docker 和 Kubernetes 中运行Go程序的影响

根据 2021 年对 Go 开发人员的调查,使用 Go 编写服务是最常见的用途。同时,Kubernetes 是部署这些服务的最广泛使用的平台。了解在 Docker 和 Kubernets 中运行 Go 的含义非常重要,可防止出现 CPU 节流等常见情况。 GOMAXPROCS 变量定义了负责同时执行用户级代码的操作系统线…

python生成二维码

要在Python中生成二维码,可以使用第三方库qrcode。首先,确保已经安装了qrcode库: pip install qrcode然后,使用以下代码生成二维码: import qrcodedata "https://mp.csdn.net/mp_blog/creation/editor?spm100…

c++ std::map 介绍

在 C 中,字典通常指的是 std::map,它是一个关联容器,用于存储键-值对,并且按照键的顺序进行排序。除了 std::map,C 标准库还提供了其他一些类似字典的容器,比如 std::unordered_map(无序字典&am…

Kafka服务端(含Zookeeper)一键自启软件

1. 前言 本文介绍了一款集成图形化界面配置和一键自启功能的Kafka与Zookeeper服务管理软件。该软件通过直观易用的图形界面,使用户能够轻松完成Kafka和Zookeeper的配置工作,有效避免了手动编辑配置文件可能带来的错误和不便。同时,软件还提供…

【附gpt4.0升级秘笈】百度智能云万源全新一代智能计算操作系统发布:引领AI新纪元

在科技日新月异的今天,人工智能(AI)作为引领未来发展的关键技术,正逐步渗透到社会的每一个角落。百度,作为中国AI领域的领军企业,始终站在技术创新的前沿,不断推出引领行业的重磅产品。今日&…

SRTP + RTCP + SCTP

SRTP(Secure Real-time Transport Protocol) 主要功能:SRTP 是 RTP 的一个扩展,提供额外的安全特性,如加密、完整性校验和认证。它旨在保护实时传输的音频和视频流不被窃听或篡改。加密传输:SRTP 使用强加密…

论文略读:SWE-bench: Can Language Models Resolve Real-world Github Issues?

iclr 2024 oral reviewer评分 5668 现有的语言模型(LMs)的基准测试已经饱和,无法捕捉到最先进的语言模型能做什么和不能做什么的前沿。 ——>要具有挑战性的基准测试论文引入了SWE-bench 在现实软件工程环境中评估语言模型的基准测试 ​​…

使用 code-server 搭建在线的 VS Code 编辑器

文章目录 前言安装体验后记 前言 VS Code 是一个非常流行的代码编辑器,安装各种拓展下也可以当作全功能的IDE使用。VS Code本身是基于Web方案构建的,完全可以搭建服务器,然后通过浏览器访问。事实上官方就是这么设计的。现在打开任何一个Git…

(Talk-Bot,ichat助手,ChatK,DGAL,NextChat,FreeGPT,动点原版chatgpt)分享7个好用ChatGPT

目录 目录 1、Talk-Bot 2、ichat助手 3、ChatK 4、DGAI 5、NextChat 6、Chkzh-Aink

【数据分享】历次人口普查数据(一普到七普)

国之情,民之意,查人口,定大计。 第七次人口普查已经结束,那么,为了方便大家把七普数据与之前的数据做对比,地理遥感生态网整理了从一普到七普人口数据,并且把第七次人口普查的数据也一并分享给…

RISC-V微架构验证

对于RISC-V处理器因其灵活性和可扩展性而受到广泛关注,但如果没有高效验证策略,错误的设计实现可能会影响RISC-V的继续推广。 在RISC-V出现之前,对于大多数半导体公司来说,处理器验证几乎成为一门屠龙之技。专业知识被浓缩到少数几…

文献速递:深度学习肝脏肿瘤诊断---基于深度学习的表型分类重新划分联合肝细胞胆管癌

Title 题目 Deep learning-based phenotyping reclassifies combined hepatocellular cholangiocarcinoma 基于深度学习的表型分类重新划分联合肝细胞胆管癌 01文献速递介绍 Primary liver cancer arises either from hepatocytic or biliary lineage cells, giving rise to…

2024中国内燃机展-北京汽车发动机零部件展

2024第二十三届中国国际内燃机与零部件展览会 由中国内燃机工业协会主办、中国机床专用技术设备有限公司、汽车工艺装备成套开发集团协办的2024中国国际内燃机及动力装备博览会(简称“动博会”)将于2024年10月11日-13日在亦创国际会展中心隆重举办。本届…

通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 粒子群优化算法 (PSO) 4.2 反向学习粒子群优化算法 (OPSO) 4.3 多策略改进反向学习粒子群优化算法 (MSO-PSO) 5.完整程序 1.程序功能描述 分别对比PSO,反向学习PSO,多策略改进反向学…

为数据穿上安全的外衣——零售电商场景下的数据安全体系建设

在电子商务交易过程中,会涉及大量的个人和财务数据的传输和处理,随着电子商务的发展,数据安全风险也成为一个备受关注的问题。 而跨境电商,属于出海业务,涉及到海外不同国家的政策法规,且数据作为电商的业…

Linux内核之aligned用法实例(四十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【AI】本地部署可以与文件沟通的GPT:Llama 2 + GPT4All + Chroma

【背景】 还是继续致力于实践可以保护数据隐私的本地化LLM部署。 这次用的是Llama 2 + GPT4All + Chroma实现RAG。 【概念】 基于LangChain模板的各个部分的作用: Llama2-》语言模型管理GPT4ALL-》embeddingChroma-》文件内容的向量存储,作为内部知识库,不需要网络就可以…