12 数据仓库理论

数仓基本概述

数据仓库基本概念

数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中
、整合多个信息源的大量数据。

数仓核心架构

数仓架构图

数据仓库建模概述

数据仓库建模意义

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储之后,数据才能高性能、低成本、高效率、高质量的使用。

数仓建模方法论

ER模型

数据仓库之父Bill Inmon提出建模方法是从全企业的高度,用实体关系(Entity Relationship, ER)来描述企业业务,并规范出来,在范式理论上符合3NF。

实体关系模型

实体关系模型将数据抽象为两个概念------关系和实体。实体表示一个对象,例如学生、班级。关系指两个实体之间的关系,例如学生从属于班级。

数据库规范化

数据库规范化就是使用一系列范式设计数据库的过程,其目的是减少数据冗余,增强数据的一致性。其中重要的范式和概念包括:

  1. 函数依赖
    函数依赖
  2. 第一范式:属性不可切割
  3. 第二范式:不能存在“部分函数依赖”
  4. 第三范式:不能存在传递函数依赖
    下图为采用ER建模方法构建的模型。
    电商订单ER模型
    这种方法可以整合数据,且能保证数据的一致性,但不适合直接进行数据分析。

维度模型

数据仓库另一位大师Kimball倡导的方法为维度建模。维度模型将复杂的业务通过事实和维度进行呈现。事实通常对应业务过程,而维度通常对应业务过程发生的环境。
下图是一个典型的维度模型。
下单业务过程维度模型

维度建模之事实表

事实表概述

事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。其包含与该业务过程有关的维度引用以及该业务过程的度量。

事实表特点

事实表通常比较“细长”,即列较少,行较多,且行的增速快。

事实表分类

  • 事务事实表
  • 周期快照事实表
  • 累积快照事实表

事务型事实表

概述

事务型事实表用来记录各个业务过程,保存各业务过程原子操作事件,即最细粒度的操作事件。粒度是指事实表中一行数据所表达的业务细节程度。

设计流程

选择业务过程–> 声明粒度–> 确认维度–> 确认事实

  1. 选择业务过程
    业务过程可概括为一个个不可拆分的行为事件。如电商交易中的下单、支付、发货、退单等。
  2. 声明粒度
    业务过程确定后,需要为每个业务过程声明粒度,即精确定义每张事务型事实表的每行数据表示什么。例如:订单事实表中一行数据表示一个订单中的一个商品项。
  3. 确定维度
    确定与每张事务型事实表相关的维度有哪些。维度的丰富程度决定了维度模型能够支持的指标丰富程度。
  4. 确定事实
    指每个业务过程的度量值。例如:次数、个数、件数、金额等。

不足

在某些业务场景下逻辑负载,效率低下。例如存量型指标和多事务关联统计。

周期性快照事实表

以具有规律性的、可预见的时间间隔来记录事实,主要用于分析存量型或者状态型指标。
例如:对于商品库存,账户余额存量型指标,可以定期同步一份业务系统中全量数据到数据仓库,构建周期型快照事实表。

设计流程

  1. 确定粒度
    可由采样周期和维度描述,确定采样周期和维度后可确定粒度。例如:指标为统计每个仓库中每种商品的库存,可确定维度为仓库和库存。粒度为:每日 - 仓库 - 商品 - 库存。
  2. 确认事实
    事实可根据统计指标确定。则上述粒度事实为商品库存。

事实类型

指度量值的类型,而非事实表的类型。事实(度量值)共分为三类,可加事实,半可加事实,不可加事实。

累积型快照事实表

概述

累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。
累积型快照事实表通常具有多个日期字段,每个日期对应业务流程中的一个关键业务过程(里程碑)。
举例如下:
累积表

设计流程

累积型快照事实表的设计流程同事务型事实表类似,也可采用以下四个步骤,下面重点描述与事务型事实表的不同之处。

  1. 选择业务过程。
    选择一个业务流程中需要关联分析的多个关键业务过程,多个业务过程对应一张累积型快照事实表。
  2. 声明粒度: 精确定义每行数据表示的是什么,尽量选择最小粒度。
  3. 确定维度:选择与各业务过程相关的维度,需要注意的是,每各业务过程均需要一个日期维度。
  4. 确认事实:选择各业务过程的度量值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django配置websocket时的错误解决

基于移动群智感知的网络图谱构建系统需要手机app不断上传数据到服务器并把数据推到前端标记在百度地图上,由于众多手机向同一服务器发送数据,如果使用长轮询,则实时性差、延迟高且服务器的负载过大,而使用websocket则有更好的性能…

链表与二叉树-数据结构

链表与二叉树-数据结构 创建叶子node节点建立二叉树三元组:只考虑稀疏矩阵中非0的元素,并且存储到一个类(三元组)的数组中。 创建叶子node节点 class Node{int no;Node next;public Node(int no){this.nono;} } public class Lb…

YOLOv8改进 | 可视化热力图 | 支持YOLOv8最新版本密度热力图,和视频热力图

一、本文介绍 本文给大家带来的机制是集成了YOLOv8最新版本的可视化热力图功能,热力图作为我们论文当中的必备一环,可以展示出我们呈现机制的有效性,本文的内容支持YOLOv8最新版本的根据密度呈现的热力图,同时支持视频检测,根据视频中的密度来绘画热力图。 在开始之前给…

薅运营商羊毛?封杀!

最近边小缘在蓝点网上看到一则消息 “浙江联通也开始严格排查PCDN和PT等大流量行为 被检测到可能会封停宽带”。 此前中国联通已经在四川和上海等多个省市严查家庭宽带 (部分企业宽带也被查) 使用 PCDN 或 PT,当用户的宽带账户存在大量上传数据的情况,中…

数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)

数据库管理141期 2024-01-29 第141期 DG PDB - Oracle DB 23c(20240129)1 概念2 环境说明3 操作3.1 数据库配置3.2 配置tnsname3.3 配置强制日志3.4 DG配置3.5 DG配置建立联系3.6 启用所有DG配置3.7 启用DG PDB3.8 创建源PDB的DG配置3.9 拷贝pdbprod1文件…

【C++】I/O多路转接详解(一)

目录 1. 背景引入1.1 IO的过程1.2 五种IO模型1.2.1 阻塞IO1.2.2 非阻塞IO1.2.3 信号驱动IO1.2.4 IO多路转接1.2.5 异步IO 1.3 同步通信 与 异步通信1.4 阻塞 与 非阻塞1.4.1 阻塞与非阻塞区别1.4.2 设置非阻塞IO 2. select2.1 接口使用2.2 select执行过程2.3 select代码实践 3.…

<网络安全>《9 入侵防御系统IPS》

1 概念 IPS( Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。 入侵预防系统(Intrusio…

JS第一课简单看看这是啥东西

1.什么是JavaScript JS是一门编程语言,是一种运行在客户端(浏览器)的编程语言,主要是让前端的画面动起来,注意HTML和CSS不是编程语言,他俩是一种标记语言。JS只要有浏览器就能运行不用跟Python或者Java一样上来装一个jdk或者Pyth…

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测(matlab) SAO-CNN-BiLSTM-Attention雪消融优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 雪消融优化器( SAO) 是受自然界中雪的升华和融化行为的启发,开发了一种…

Docker入门篇(二)—— 命令

Docker入门篇(二)—— 命令 插播!插播!插播!亲爱的朋友们,我们的Cmake/Makefile/Shell这三个课程上线啦!感兴趣的小伙伴可以去下面的链接学习哦~ 构建工具大师-CSDN程序员研修院 一、引言 当…

二叉搜索树的后序遍历序列

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

利用Knife4j注解实现Java生成接口文档

文章目录 1、简介2、生成文档3、系列注解3.1、Api3.2、ApiResponses和ApiResponse3.3、ApiOperation3.4、Pathyvariable⭐3.5、RequestBody3.6、ApiOperationSupport3.7、ApiImplicitParams 和 ApiImplicitParam3.8、ApiModel3.9、ApiModelProperty ​🍃作者介绍&am…

动手学RAG:汽车知识问答

原文:动手学RAG:汽车知识问答 - 知乎 Part1 内容介绍 在自然语言处理领域,大型语言模型(LLM)如GPT-3、BERT等已经取得了显著的进展,它们能够生成连贯、自然的文本,回答问题,并执行…

JUC并发编程-异步回调、JMM、volatile

15. 异步回调 Future 设计的初衷:对将来的某个事件结果进行建模! 其实就是前端 --> 发送ajax异步请求给后端 但是我们平时都使用CompletableFuture 1)异步调用:CompletableFuture 没有返回值的异步回调 public static void ma…

Microsoft Edge 浏览器报错 提示不安全

网站提示不安全 是因为 Microsoft Edge 开了安全过滤 我们需要把这个关掉 打开浏览器的设置,然后 找到隐私选项 找到下边的Microsoft Defender Smartscreen 关掉 Microsoft Edge 支持 Microsoft Defender SmartScreen | Microsoft Learn win10系统下打开网页提示…

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…

第一节 分布式架构设计理论与Zookeeper环境搭建

目录 1. 分布式架构设计理论 1. 分布式架构介绍 1.1 什么是分布式 1.2 分布式与集群的区别 1.3 分布式系统特性 1.4 分布式系统面临的问题 2. 分布式理论 2.1 数据一致性 2.1.1 什么是分布式数据一致性 2.1.2 副本一致性 2.1.3 一致性分类 2.2 CAP定理 2.2.1 CAP定…

微服务-微服务Alibaba-Nacos 源码分析(上)

Nacos&Ribbon&Feign核心微服务架构图 架构原理 1、微服务系统在启动时将自己注册到服务注册中心,同时外发布 Http 接口供其它系统调用(一般都是基于Spring MVC) 2、服务消费者基于 Feign 调用服务提供者对外发布的接口,先对调用的本地接口加上…

c++程序的各阶段

c程序四个阶段 预处理阶段 预处理器&#xff08;cpp&#xff09;根据以字符#开头的命令&#xff0c;修改原始的C程序。比如hello.c中第一行的#include<stdio.h>命令告诉预处理器读取系统头文件stdio.h的内容&#xff0c;并把它直接插入程序文本中&#xff0c;结果就得到…

代码随想录算法刷题训练营day19

代码随想录算法刷题训练营day19&#xff1a;LeetCode(404)左叶子之和、LeetCode(112)路径总和、LeetCode(113)路径总和 II、LeetCode(105)从前序与中序遍历序列构造二叉树、LeetCode(106)从中序与后序遍历序列构造二叉树 LeetCode(404)左叶子之和 题目 代码 /*** Definitio…