维度建模

article/2025/9/28 12:05:16

维度建模

维度模型简介

维度建模被广泛接受为数据分析的首选技术,因为它同时满足了两个需求:

1.向用户交付可以理解的数据
2.提供快速查询的性能

维度建模实体建模第三范式(3NF)建模
适合表连接以及聚合计算的查询请求;易用,易理解,查询效率高,更适合作为分析性应用(OLAP、BI)的基础抽象客观世界的方法,局限于业务建模和领域概念建模适用于频繁的update、insert这种(事务型应用);规范化模型过于复杂,无法得到直观的、高性能的数据检索

维度建模的两种模型:

  • 星型模型
    维度建模是数据仓库建设中的一种数据建模方法。Kimball最先提出这一概念。其最简单的描述就是,按照事实表,维度表来构建数据仓库,数据集市。这种方法被人广泛知晓的名字就是星型模型(Star-schema)。
    在这里插入图片描述
  • 雪花模型
    当星型模型的维度表进一步层次化,就形成了雪花模型。
    在这里插入图片描述

维度建模的优点

  • 直观
  • 围绕业务模型
  • 反应业务问题
  • 不需要抽象处理

维度建模的缺点

  • 由于在构建星型模式之前需要进行大量的数据预处理,因此会导致大量的数据预处理工作。
  • 当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些预处理过程中,会导致大量的数据冗余。
  • 如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性。
  • 在数据仓库的底层,不是特别适用于维度建模的方法。

维度建模的基本原则

  1. 将详细的原子数据载入到维度结构中
  2. 围绕业务流程构建维度模型
  3. 确保每个事实表都有一个与之关联的日期维度表
  4. 确保每个事实表中的事实具有相同的粒度或同级的详细程度
  5. 避免事实表中出现多对多的关系
  6. 避免维度表中出现多对一的关系
  7. 避免在事实表中存储神秘的编码字段或庞大的描述符字段
  8. 确保维度表使用了代理键(无业务意义的主键)
  9. 创建一致的维度集成整个企业的数据
  10. 不断平衡需求和现实,提供DW/BI解决方案

维度表技术基础

维度表结构

维度表是在事实各维度上所建立的表。维度表可以看做是用户来分析数据的窗口。

在这里插入图片描述
维度表示例
在这里插入图片描述
键属性

维度表包含了维度的每个成员的特定名称。维度成员的名称称为“属性”(Attribute)。拿产品维度表作为示例。
在数据仓库中,维度表中的键属性必须为维度的每个成员包含一个对应的唯一值。用关系型数据库术语描述就是,键属性称为主键列。

在这里插入图片描述
原则1+原则2

把维度信息移动到一个单独的表中,除了使得事实表更小外,还有额外的优点,就是可以为每个维度成员添加额外的信息

在这里插入图片描述
维度表特点

  • 表形状 宽的、扁平的
  • 表性质 非规范化的表,具有许多低粒度的文本属性
  • 表特点 维度表属性

维度键代理

  • 自然键==>自然键是现实世界中已经存在的一个或多个属性,它在业务概念中唯一。
  • 代理键==>而代理键通常是数据库系统赋予的一个数值,是自增型的,按顺序分配,没有内置含义但也可以唯一地标识一条维度信息。

代理键实现方法

  1. 使用数据库赋值—— 大多是主要的数据库供应商实现了被称为递增键的代理键策略。即,数据库中的表主键设为自增键。
  2. MAX()+1—— 一个常用的策略是使用整数列,第一条记录从1开始,然后新行的值设置为该列的最大值加1,最大值用SQL函数MAX获得。
  3. 全局唯一标识符(UUIDs)—— UUIDs是128位值,来自以太网卡ID或等价的软件表示以及系统当前时间的哈希值。该算法是由开放软件基金会定义的。
  4. 全球唯一标识(GUIDs)—— GUIDs是微软扩展UUIDs后的标准,遵从相同的策略,如果存在以太网卡使用网卡ID,如果不存在,使用软件ID与当前时间计算一个哈希值,确保在机器内部唯一。
  5. 高低位策略—— HIGH-LOW发生器,分为两个逻辑部分:从指定来源获取的唯一HIGH值和应用自身分配的N为LOW值。如:应用请求一个HIGH值并被赋予1701。假设LOW值的位数N为4,那么赋予对象的POID将会由17010000、17010001、17010002等等直到17019999组成。只要HIGH值唯一,所有的POID值将会唯一。

多维体系结构

维度建模的数据仓库中,Kimball的多维体系结构(MD)包含三个关键性概念:

  • 总线架构(Bus Architecture)
  • 一致性维度(Conformed Dimension)
  • 一致性事实(Conformed Fact)
    在这里插入图片描述

总线结构
在这里插入图片描述

很明显,要将图3-1中的业务价值链组合成数据仓库,就不能对各业务处理分别进行维度建模、建数据集市,因为如果那样的话,数据集市之间没有共享的公共维度,数据集市就会变成独立的集市,会出现问题,不能组合成数据仓库。要成功建立数据仓库,并使得数据仓库能够长期地正常运转,就需要有一种方法,可以在体系结构上按增量方式建造企业数据仓库。这里提倡使用的一种方法就是数据仓库总线结构。
如果为数据仓库环境定义标准的总线接口,那么不同的小组在不同的时间可以实现独立的数据集市。只要遵循这个标准,独立的数据集市就可以集成到一起并有效地共存。所有业务处理将创建一个维度模型系列,这些模型共享一组维度,这组公用维度具有一致性,如图3-2所示。
在这里插入图片描述
简单来说,总线结构提供分解企业数据仓库规划任务的方法:

  • 首先,设计出一整套具有统一解释的标准化维度与事实。
  • 然后,迭代开发数据集市

总线结构使数据仓库管理人员获取两个方面的优势:

  • 他们有了指导总体设计的体系框架,将问题分成了数据集市块。
  • 各数据集市开发团队可以相对独立地异步地开展工作。

一致性维度

当不同的维度表属性具有相同的列名和领域内容时,称维度表具有一致性。下图给出了这种维度共享情形的逻辑表示形式。
在这里插入图片描述

  • 一致性维度分为两种:一种是在不同数据集市维度保持一致;还有就是在同一个集市内维度一致。
  • 在后台建立好的维度同步复制到各个数据集市。
  • 在同一个集市内,一致性维度的意思是两个维度如果有关系,那么就是完全一样的,要么就是一个维度在数学意义上是另一个维度的子集。

数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:

  • 标准化==>匹配==>筛选

一致性事实

定义:当不同的事实表具有相同的事实,且这些事实具有相同的定义域方程(公式)时,称事实表具有一致性。
描述:一般来说,事实表数据并不在各个数据集市之间明确地进行复制。不过,如果事实确实存在于多个位置,那么支撑这些事实的定义与方程(公式)都必须是相同的。

缓慢维度变化

缓慢维度变化(Slow Changing Dimensions)(SCD)指随着时间缓慢变化的维度。如产品类别维度,地区维度等。在相同的维度表中,使用不同的更改跟踪技术处理属性是非常常见的。SCD可根据是否/如何保留维度的变化历史,分为不同类别。
在这里插入图片描述

  • 类型0:保留原来的
    对于类型0,维度属性永远不会改变,所以事实总是按照这个原始值分组。
    在这里插入图片描述
  • 类型1:覆盖
    对于类型1,维度行中的旧属性值被新值覆盖。
    在这里插入图片描述
  • 类型2:添加新行
    类型2在维度中新增一行数据,此数据具有更新的属性值,并将旧数据行标记为“过期”。
    在这里插入图片描述
  • 类型3:添加新属性
    类型3在维度中添加一个新属性以保存旧属性值;新值覆盖了主属性。
    在这里插入图片描述
  • 类型4:添加微信维度
    当维度中的一组属性快速变化并被分割为一个小维度时,使用类型4技术。
    在这里插入图片描述
  • 类型5:添加微型维度和类型1支架
    类型5技术用于精确地保存历史属性值,并根据当前属性值报告历史事实。
    在这里插入图片描述
  • 类型6:向类型2维度中添加类型1属性
    类型6也提供历史和当前维度属性值,它相当于类型2和类型1的结合。
    在这里插入图片描述
  • 类型7:双类型1和类型2型的维度
    类型7是最后一种混合技术,用于支持原有和现有的报表。
    在这里插入图片描述

事实表技术基础

事实表结构

在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”。

实时数据表的主要特点:

  • 通常包含大量的行;
  • 包含数字数据(事实);
  • 数字信息可以汇总;
  • 每个事实数据表包含一个由多个部分组成的索引;
  • 索引包含作为外键的相关性维度表的主键。

“事实”这一术语表示某个业务度量,而事实表则是由“事实”转化而来。
在这里插入图片描述
从另一个角度来看销售事实表的一个实例。
在这里插入图片描述
事实表几乎总会使用一个整数值来表示(维度)成员,而不是用描述性的名称。
在这里插入图片描述

事实表的三类事实

将事实相加以获得对单个事实汇总的能力被称为可加性。
根据可加性可以将事实表中的数字度量分为三类:可加、半可加、不可加。
完全可加事实

  • 完全可加度量是最灵活、最有用的事实,它可以按照与事实表关联的任意维度汇总。
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/te5UMx9x.shtml

相关文章

数据模型建设-维度建模详解

5.2 维度建模 维度建模是一种将大量数据结构化的逻辑设计手段,包含维度和指标,它不像ER模型目的是消除冗余数据,维度建模是面向分析,最终目的是提高查询性能,所以会增加数据冗余,并且违反三范式。 维度建…

绘制彩色图的颜色直方图

计数直方图 在Opencv中已经集成了关于彩色图像直方图计算的函数,形式如下: import cv2cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])参数 images:array-like类型,要计算的图像(单张或多张)&a…

matplotlib 图像颜色直方图

参考学习 定义 cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) ->hist imaes:输入的图像channels:选择图像的通道mask:掩膜,是一个大小和image一样的np数组,其中把需要处理的部分指定为1,不需要处理的…

OpenCV—python 颜色直方图与直方图均衡化

文章目录 一、颜色直方图1.1 使用opencv展示直方图1.2 使用matplotlib绘制 二、直方图均衡化2.1 全局直方图均衡化与自适应均衡化2.2 使用查找表来拉伸直方图2.3 直方图均衡化—RGB2YCrCb2.4 直方图均衡化—RGB2YUV 一、颜色直方图 1.1 使用opencv展示直方图 函数 cv2.calcHis…

颜色直方图和颜色矩

来源:http://www.xuebuyuan.com/2019161.html 1、颜色直方图 颜色直方图所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。 …

颜色直方图 灰度图彩色图

1.读取照片 cv2.imread(图片路径,cv2.IMREAD_COLOR) 2.定义color变量(b,g,r) 代表三个通道 3.彩色图像为例 for i,col in enumerate(color):遍历…

基于MATLAB颜色直方图的图像检索

基于颜色直方图的图像检索 概述 在过去的十几年间,有许多知名机构都对图像检索系统进行了深入的研究,病开发出了相应的检索系统,例如IBM Almaden研究中心研制的QBIC系统,Virage公司研发的VIRAGE系统,麻省理工大学多媒体…

pyimagesearch-4 聪明的女孩:计算机视觉和图像搜索引擎使用颜色直方图的指南

原文链接 It’s…it’s a histogram. – Dr. Grant 好吧,也许这不是确切的引用。但是,如果格兰特博士知道颜色直方图的力量,我认为他会同样激动。 更重要的是,当电力耗尽时,直方图不会让游客吃东西。 那么&#xff…

OpenCV 学习笔记(颜色直方图计算 calcHist)

OpenCV 学习笔记(颜色直方图计算 calcHist) 最近在看一本OpenCV 的书,书名是 《OpenCV 3 Computer Vision Application Programming Cookbook (third edition)》,里面给了很多很实用的代码片段。最近这几篇…

Opencv绘制HSV颜色直方图

一. 使用Opencv绘制HSV颜色直方图 所用的函数 cvCvtColor 可在: 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图 文章中查找相关介绍 所使用的结构体: CvHistogram 以及函数: cvCalcHist CvCreateHist cvGetMinMaxHistValue cv…

基于颜色直方图优化的图像增强方法

最近改图像颜色迁移的论文,审稿人要求补充基于直方图优化的方法细节。趁此机会,我重新下载了相关文献,决定重新学习下该类方法,并把一些细节记录在本篇博客中,供交流学习。 目录 1. 前言 2. 背景知识 3. 颜色变换 4. 颜…

[OpenCV实战]52 在OpenCV中使用颜色直方图

颜色直方图是一种常见的图像特征,顾名思义颜色直方图就是用来反映图像颜色组成分布的直方图。颜色直方图的横轴表示像素值或像素值范围,纵轴表示该像素值范围内像素点的个数或出现频率。颜色直方图属于计算机视觉中的基础概念,其常常被应用于…

关于颜色直方图

一、颜色距 转自:https://blog.csdn.net/jaych/article/details/51137341 1、颜色距离 颜色距离指的是两个颜色之间的差距,通常距离越大,两个颜色相差越大,反之,两个颜色越相近。在计算颜色距离时,有类似…

图像特征分析---颜色特征描述---颜色距和颜色直方图

一、颜色距 转自:https://blog.csdn.net/jaych/article/details/51137341 1、颜色距离颜色距离指的是两个颜色之间的差距,通常距离越大,两个颜色相差越大,反之,两个颜色越相近。在计算颜色距离时,有类似计算…

颜色特征提取(一)——颜色直方图(opencv实现)

直方图——再讲颜色直方图之前,先简单介绍一下直方图。 直方图作为一种简单有效的基于统计特性的特征描述子,在计算机视觉领域广泛使用。它的优点主要体现在两个方面:一是对于任意一个图像区域,直方图特征的提取简单方便;其二,直…

一般颜色直方图

颜色直方图是一种用于图像处理和分析的图表,它可以显示图像中不同颜色的数量。通常,颜色直方图会将颜色分成几个色调区间,每个区间对应一个条形图,其中条形图的高度表示该色调区间中的像素数量。通过颜色直方图,你可以…

网络爬虫Jsoup

简介 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、…

【Java】Jsoup爬虫快速入门案例

1、前言 该技术博客是根据B站狂神说Java教程的笔记总结,希望能为大家带来帮助! 2、Jsoup实战案例 爬虫可以理解为爬取数据,所谓爬取数据就是: 获取请求返回的页面信息,筛选出我们想要的数据 如果想要爬取数据&#…

android爬虫框架jsoup,Android笔记之JSoup爬虫入门

前言 闲扯一些没用的,写这篇文章之前是有点私心的,因为之前评论某简书大v的文章是鸡汤,瞬间被拉黑,连个解释和说明的机会都没有,文章语言干涩,内容平平,于是就好奇到底是些什么样的人喜欢和吹捧…

Java的Jsoup爬虫

Java的Jsoup爬虫,爬携程酒店评分,保存数据库中 前言一、Jsoup爬虫pom二、逻辑代码部分1.首先我们要先确定爬取的东西,这边我就以携程的酒店评分为例子。2.Jsoup进行解析具体要求爬的内容3.接下来我们就是将爬取的数据存入数据库中 总结 前言 …