数仓开发中期:理论巩固

一、数仓以及商业智能(Data Warehousing and Business Intelligence, DW/BI)系统

1.1数据操作和数据获取的区别

对所有组织来说,信息都是其最重要的财富之一。信息几乎总是用作两个目的:操作型记录的保存和分析型决策的制定。简单来说,操作型系统保存数据,而DW/BI系统使用数据。

操作型系统的用户确保组织能正常运转。操作型系统获取订单、签订新客户、监视操作型活动的状态、记录问题。对操作型系统进行优化的目的是使其能够更快

操作型系统一般一次处理一个事务记录。它们按部就班,以可预测的方式完成同样的操作型任务,可预测地执行组织的业务过程。鉴于这种执行特点,操作型系统通常不必维护历史数据,只需修改数据以反映最新的状态。

另一方面,DW/BI系统的用户研究分析企业的运转,并对其性能进行评估。DW/BI系统计算新订单的数量,并与过去一周的订单进行比较,找寻签订新客户的原因,了解客户在抱怨什么。这些信息用于分析并判断操作型过程是否处于正确的工作状态。尽管也需要详细的数据来支持始终处于变化状态的问题,但DW/BI系统一般不会一次只处理一个事务。对 DW/BI系统进行优化的目的是高性能地完成用户的查询,而回答用户的查询通常需要搜索成千上万条事务,并将查询结果放入一个查询集合中。为应对更复杂的问题,DW/BI系统的用户通常要求保存历史环境,用于精确地评估组织在一段时间内的性能。

2.1维度建模简介

基于前述对DW/BI系统目标的介绍,本节开始介绍维度建模的基本概念。维度建模是展现分析数据的首选技术,这一观点之所以被广泛接受,主要基于以下两个需要同时满足的需求:
以商业用户可理解的方式发布数据。
提供高效的查询性能。维度建模并不是一种新技术,早期主要用于简化数据库。50多年来,经过大量案例的考验,IT 组织、行业顾问和商业用户自然而然地被这种以单一维度结构满足人们基本需求的简单性所吸引。简单性至关重要,因为它能够确保用户方便地理解数据,以及确保软件能够快速、有效地发现及发布结果。
假设某个业务经理描述其业务为:“我们在各种各样的市场销售产品,并不断地对我们的表现进行度量。”维度设计者通过仔细倾听和分析,知道其业务强调的是产品、市场、时间。多数人发现其业务包含三维数据,即将其业务数据标识为产品、市场和时间。设想沿着上述三维进行切片和切块操作。多维数据库中的点表示度量结果,例如,销售额或利润,这一结果是满足特定产品、市场和时间的结果。将某些事情以具体、有形的方式抽象成数据集展示出来的能力是解决可理解能力的法宝。如果上述场景表现太简单,这正是我们的所需!从简单的数据模型开始是保持设计简单性的基础。如果从复杂的数据模型起步,那么最终会导致模型过度复杂,从而导致查询性能低下,最终使商业用户反感。爱因斯坦曾经说过“凡事应该尽量简单,直到不能再简单为止。”

业界有时将 3NF 模型称为实体-关系模型。实体-关系图(ER图或ERD)表示了表间的交互关系。3NF模型及维度模型都可以用ERD表示,因为它们都包含可连接的关系表。主要差别在于规范化程度。因为两种模型都可以用ERD表示,我们强调不要将ER模型当成
3NF 模型,将3NF 模型称为规范化模型以消除混淆。规范化的 3NF 模型主要应用于操作型过程中,因为对事务的更新与插入仅触及数据库的单一地方。然而,对 BI查询来说,规范化模型太复杂。用户难以理解、检索,难以记住类似洛杉矶地铁系统那样具有复杂网络的模型。而且,多数关系数据库管理系统不能有效地查询规范化模型,用户查询难以预测的复杂性将耗尽数据库优化器,产生灾难性的查询性能。在 DW/BI这样的展现系统中使用规范化建模方法难以满足对数据的高性能检索需求。幸运的是,维度建模解决了模式过分复杂的问题。

3.1事实表

维度模型中的事实表存储组织机构业务过程事件的性能度量结果。应该尽量将来源于同一个业务过程的底层度量结果存储于一个维度模型中。因为度量的数据量巨大,所以不应该为满足多个组织功能的需要而将这些数据存放在多个地方。应该允许多个组织的业务用户访问同一个单一的集中式数据仓库,确保他们能在整个企业中使用一致的数据。

事实表中的每行对应一个度量事件。每行中的数据是一个特定级别的细节数据,称为粒度。例如,销售事务中用一行来表示每个卖出的产品。维度建模的核心原则之一是同一事实表中的所有度量行必须具有相同的粒度。牢记建立事实表时使用统一的细节级别这原则可以确保不会出现重复计算度量的问题,
注意:
物理世界的每一个度量事件与对应的事实表行具有一对一的关系,这一思想是维度建模的基本原则。其他工作都是以此为基础建立的。最实用的事实是数值类型和可加类型事实。

4.1维度表

维度表是事实表不可或缺的组成部分。维度表包含与业务过程度量事件有关的文本环它们用于描述与“谁、什么、哪里、何时、如何、为什么”有关的事件。境。如图1-3所示,维度表通常有多列,或者说包含多个属性。有50~100个属性的维度表并不稀奇。尽管如此,也可能存在一些只包含少量属性的维度表。与事实表比较,维度表趋向于包含较少的行,但由于可能存在大量文本列而导致存在多列的情况。每个维度表由单一主键定义(参考图 1-3 的主键概念),用于在与事实表连接操作时实现参照完整性的基础。维度属性可作为查询约束、分组、报表标识的主要来源。对查询或报表请求来说,属性以词或词组加以区分。例如,当用户希望按照品牌来查看销售额时,要查看的品牌必须存在于维度属性中。

5.1ETL转化

DW/BI环境中获取、转换、加载(Extract Transformation and Load,ETL)系统包括一个工作区间、实例化的数据结构以及一个过程集合。ETL系统是处于操作型源系统与DW/BI展现系统之间的区域。此处仅对DW/BI系统中的这一基础模块进行简单介绍。
获取是将数据从操作型系统导入数据仓库环境这一ETL过程的第1步。获取意味着读取并理解源数据并将需要的数据复制到ETL系统中以利于后续的处理操作。从这点来看,数据属于数据仓库。
数据获取到ETL 系统后,需要进行多种转换操作,例如,清洗数据(消除拼写错误、解决领域冲突、处理错误的元素、解析为标准格式),合并来自不同数据源的数据,复制数据等。ETL系统通过增强或数据变换,采用清洗和整合上述任务的方法,增加数据的利用价值。另外,这些工作还可以建立诊断元数据,逐步建立业务过程再工程以改进源系统的数据质量。
ETL 最后的步骤是实际构建和加载数据到展现区域的目标维度模型中。由于ETI系统的主要任务是在交付过程中划分维度和事实,因此其所包含的子系统非常重要。此处定义的子系统关注维度表的处理,例如,代理键分配、查找代码以提供适当的描述、拆分或组合列以提供适当的数据值、连接满足第3范式的数据表成为扁平的不满足规范化要求的维度等。相比之下,事实表往往比较庞大,因此在加载时需要耗费大量时间,将其加载并导入到展现区是必须开展的工作。当维度模型中的维度表和事实表被更新、索引、适当聚集,并确保良好质量后,业各用户就可以开始使用这些数据了。

6.1分层

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

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

相关文章

Stack数据结构设计模板

第三章 栈、队列、数组 1.栈 1.1 顺序栈 #define MaxSize 20 typedef int ElemType; //顺序栈的定义 typedef struct {ElemType data[MaxSize];int top; }SqStack; // 初始化顺序栈 void InitSqStack(SqStack &S){S.top -1; }; // 入栈(增) bool Push(SqStack &S,El…

(非常全)前后端分离架构的优势

前后端分离架构在现代Web应用开发中变得越来越流行,它具有许多优势: 职责划分清晰:前后端分离使得前端专注于用户界面和交互,后端专注于业务逻辑和数据处理。这种职责划分有助于提高开发效率,降低维护成本。 开发效率…

WIFI模块UDP电脑端调试

一,两端都是电脑端 1,电脑本机的IP地址 192.168.137.1 2,新建两个不同的连接,注意端口 二,WIFI 模块和电脑端连接 1,设置模块端目标IP和端口,电脑端只接收数据的话,IP、端口可随…

自建的 npm 仓库上发布包

要在自建的 npm 仓库上发布包&#xff0c;你需要按照以下步骤操作&#xff1a; 1. 设置 npm 仓库地址 首先&#xff0c;确保你已经将 npm 配置为使用你的自建仓库。你可以通过以下命令将 npm registry 配置为你的仓库地址&#xff1a; npm config set registry <your-reg…

【从零开始学架构 架构基础】架构设计的本质、历史背景和目的

本文是《从零开始学架构》的第一篇学习笔记&#xff0c;主要理解架构的设计的本质定义、历史背景以及目的。 架构设计的本质 分别从三组概念的区别来理解架构设计。 系统与子系统 什么是系统&#xff0c;系统泛指由一群有关联的个体组成&#xff0c;根据某种规则运作&#…

企业终端安全管理软件有哪些?终端安全管理软件哪个好?

终端安全的重要性大家众所周知&#xff0c;关系到生死存亡的东西。 各类终端安全管理软件应运而生&#xff0c;为企业提供全方位、多层次的终端防护。 有哪些企业终端安全管理软件&#xff1f; 一、主流企业终端安全管理软件 1. 域智盾 域智盾是一款专为企业打造的全面终端…

奥威-金蝶BI现金流量表模板,可借鉴、可套用

企业现金流一旦出了问题都是大问题&#xff0c;会直接影响到企业的日常运作&#xff0c;甚至直接关系到企业能不能继续存活&#xff0c;因此现金流量表是企业财务分析中重要报表之一&#xff0c;也是企业监控财务监控情况的重要手段之一。那么这么重要的一份现金流量表该怎么做…

[Linux] GDB使用指南----包含CentOS7下安装以及使用

什么是GDB&#xff1f; GDB 是由 GUN 软件系统社区提供的调试工具&#xff0c;同 GCC 配套组成了一套完整的开发环境&#xff0c;GDB 是 Linux 和许多 类Unix系统的标准开发环境。可以用来调试C、C、Go、java、 objective-c、PHP等语言。 GDB的作用 程序启动时&#xff0c;可…

73. 矩阵置零/54. 螺旋矩阵

73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 思路&#x…

小程序搜索排名优化 三步操作提升

搜索排名优化最直接的一个目的就是为了提升小程序的排名和流量&#xff0c;获取用户的信任度。当用户在搜索关键词的时候&#xff0c;能让用户看到小程序&#xff0c;增加被发现和点击的机会。 一、关键词优化&#xff1a; 1.选择合适的关键词&#xff1a;选择与小程序内容高…

Python和MATLAB及C++资产价格看涨看跌对冲模型和微积分

&#x1f3af;要点 &#x1f3af;资产价格动态数学随机模型&#xff1a;&#x1f58a;价格几何布朗运动过程积分 | &#x1f58a;布朗运动和几何布朗运动随时间概率密度 | &#x1f58a;几何布朗运动离散过程 | &#x1f58a;电动车历史股票价值及预期。&#x1f3af;金融衍生…

代码训练LeetCode(17)存在重复元素

代码训练(17)LeetCode之存在重复元素 Author: Once Day Date: 2024年5月7日 漫漫长路&#xff0c;才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 219. 存在重复元素 II - 力扣&#xff08;LeetCode&#xff09;力扣 (LeetCode) 全球…

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类 摘要IntroductionRelated work FER-YOLO-Mamba: Facial Expression Detection and Classification Based on Selective State Space 摘要 面部表情识别&#xff08;FER&#xff09;在理解人类情绪线索方面起着关键…

零资源跑大模型:Hugging Face API + LiteLLM + Flask

前言 HuggingFace 是自然语言处理领域的开源软件库和平台&#xff0c;其收纳了众多最前沿的模型和数据集&#xff0c;并提供了 Serverless Inference API&#xff0c;用户可以轻松调用这些模型&#xff0c;甚至用于运行自己的私人模型。本教程将指导用户如何利用 Hugging Face…

RabbitMQ之消费者并发消费

为什么要引入消费者的并发消费&#xff1f; 当生产者的推送速度是远远超过消费者的能力的&#xff0c;可以提高消费者的消费速度。比如在java中我们可以启动多个 JVM 进程&#xff0c;实现多进程的并发消费&#xff0c;从而加速消费的速度&#xff0c;在mq中也可以通过设置配置…

如何使用Python创建服务器向Android设备发送GCM推送通知

简介 推送通知可以让您的 Android 应用在用户不使用应用时通知用户发生的事件。本教程的目标是向您的应用发送一个简单的推送通知。我们将在服务器上使用 Ubuntu 14.04 和 Python 2.7&#xff0c;以及 Google Cloud Messaging 作为推送通知服务。 我们将使用术语 服务器 来指…

leetcode83-Remove Duplicates from Sorted List

题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2] 示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3] 输出&…

鸿蒙内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽

进程间为何要通讯 ? 鸿蒙内核默认支持 64个进程和128个任务&#xff0c;由进程池和任务池统一管理.内核设计尽量不去打扰它们&#xff0c;让各自过好各自的日子&#xff0c; 但大家毕竟在一口锅里吃饭&#xff0c; 不可能不与外界联系&#xff0c; 联系就得有渠道&#xff0c…

MySQL VARCHAR 最佳长度评估实践

你的 VARCHAR 长度合适么&#xff1f; 作者&#xff1a;官永强&#xff0c;爱可生 DBA 团队成员&#xff0c;擅长 MySQL 运维方面的技能。热爱学习新知识&#xff0c;亦是个爱打游戏的宅男。 作者&#xff1a;李富强&#xff0c;爱可生 DBA 团队成员&#xff0c;熟悉 MySQL&…

Go微服务精讲:Go-Zero全流程实战即时通讯(超清)

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性&#xff0c;经受了充分的实战检验。 Go微服务精讲&#xff1a;Go-Zero全流程实战即时通讯(超清) go-zero 中的 api&#xff0c;rpc&#xff0c;数据库等涉及的代码&#xff0c;…