数仓开发中期:理论巩固

news2024/11/24 4:46:02

一、数仓以及商业智能(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.coloradmin.cn/o/1649795.html

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

相关文章

后仿中必须读懂的User-defined primitives(UDP)

一 UDP定义规则 UDP,全名:User-defined primitives。 用户自己定义的原语。 UDP可分为:combinational UDP(组合逻辑)和 sequential UDP(时序逻辑)。 1.1 组合逻辑UDP combinational UDP用于…

Gradio之blocks灵活搭建页面

这里写目录标题 搭建一个UI界面搭建上半部分的框架比例调节以及其他效果搭建下半部分左边部分搭建下半部分右边部分拓展-CSS的应用 使用标签搭建第二个页面示例 补充AccordionGroup() 搭建一个UI界面 搭建上半部分的框架 如下图,我们想要基本还原下图右边的UI界面…

PVZ2 植物克僵尸【第二期】

众所周知,PVZ2(植物大战僵尸2)中有许多恶心的僵尸,而我们不得不派出它们的————克星!(*为建议方法) 5.战机小鬼 战机小鬼,恶心会发射子弹,所以: 1&…

【华为OD机试】攀登者2(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[…

[Java EE] 多线程(九):ReentrantLock,Semaphore,CountDownLatch与线程安全的集合类(多线程完结)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

力扣437. 路径总和 III

Problem: 437. 路径总和 III 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义int类型函数rootSum(root, targetSum),用于求取每一个节点等于目标函数的路径数: 1.1.易知rootSum(root, targetSum)求出的数量等于rootSum(root.left, targetSum - va…

智慧公厕建设,打造智慧城市基础设施新亮点

公共厕所是城市基础设施的重要组成部分,而智慧公厕的建设则是现代城市管理的创新之举。为了实现公厕的精细化管理和提供更便捷的服务,推进智慧公厕建设必须要实现技术融合、业务融合、数据融合的目标,跨越层级、地域、系统、部门和业务的限制…

LeetCode:盛最多水的容器

文章收录于LeetCode专栏 盛最多水的容器 给你n个非负整数a1,a2,…,an,每个数代表坐标中的一个点(i, ai) 。在坐标内画 n 条垂直线,垂直线i的两个端点分别为(i, ai) 和 (i, 0)。找出其中的两条线,使得它们与…

自动化运维管理工具----------Ansible模块详细解读

目录 一、自动化运维工具有哪些? 1.1Chef 1.2puppet 1.3Saltstack 二、Ansible介绍 2.1Ansible简介 2.2Ansible特点 2.3Ansible工作原理及流程 2.3.1内部流程 2.3.2外部流程 三、Ansible部署 3.1环境准备 3.2管理端安装 ansible 3.3Ansible相关文件 …

机器学习第二天(监督学习,无监督学习,强化学习,混合学习)

1.是什么 基于数据寻找规律从而建立关系,进行升级,如果是以前的固定算式那就是符号学习了 2.基本框架 3.监督学习和无监督式学习: 监督学习:根据正确结果进行数据的训练; 在监督式学习中,训练数据包括输…

《Python编程从入门到实践》day21

# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构:方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…

Day1| Java基础 | 1 面向对象特性

Day1 | Java基础 | 1 面向对象特性 基础补充版Java中的开闭原则面向对象继承实现继承this和super关键字修饰符Object类和转型子父类初始化顺序 多态一个简单应用在构造方法中调用多态方法多态与向下转型 问题回答版面向对象面向对象的三大特性是什么?多态特性你是怎…

基于Springboot+Vue的Java项目-鲜牛奶订购系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

matplotlib和pandas与numpy

1.matplotlib介绍 一个2D绘图库; 2.Pandas介绍: Pandas一个分析结构化数据的工具; 3.NumPy 一个处理n纬数组的包; 4.实践:绘图matplotlip figure()生成一个图像实例 %matplotlib inline:图形直接在…

​​【收录 Hello 算法】3.3 数字编码

目录 3.3 数字编码 3.3.1 原码、反码和补码 3.3.2 浮点数编码 3.3 数字编码 Tip 在本书中,标题带有 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过,等学完必读章节后再单独攻克。 3.3.1 原码、反码和补码 在…

重装win11系统后找不到WiFi

由于电脑崩溃重装了系统,win11,装完之后WiFi图标不见了且网络适配器根本没有无线网络选项。 右键电脑》管理》网络适配器。 在刚装好系统时候并没有前两项,查了很多资料,比如 关机14s 重启,还有通过服务配置 WLAN AutoConfig 都…

值得收藏!修复Windows 10/11中找不到输出或输入设备的五种方法

序言 这篇文章主要关注处理声音输出/输入设备未发现的问题。它提供了许多可行的方法,帮助了许多Windows用户。阅读以下内容以找到你的解决方案。 最近,我将Windows 10更新到21H2,发现我的音频无法工作。当我把鼠标放在任务栏上的声音图标(上面有一个十字图标)上时,它会…

word:三线表的绘制【攻略】

word:三线表的绘制【攻略】 前言版权推荐word:三线表的绘制效果简单方法另外的方法 最后 前言 2024-5-7 18:25:08 以下内容源自《【攻略】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客…

docker jenkins 部署springboot项目

1、创建jenkins容器 1,首先,我们需要创建一个 Jenkins 数据卷,用于存储 Jenkins 的配置信息。可以通过以下命令创建一个数据卷: docker volume create jenkins_data启动 Jenkins 容器并挂载数据卷: docker run -dit…

视频素材库在哪里找免费手机版?8个可以用手机浏览的素材网

在视觉内容占据主导地位的今天,合适的视频素材可以大大提升项目的吸引力和效果。以下列出的视频素材网站为广告制作者、社交媒体策略师及电影制作人提供了从传统到现代风格的各种视频素材选择,满足不同的创作需求。 1. 蛙学府(中国&#xff…