数仓维度设计模型、事实表、维度表、指标、宽表,常见的三种维度建模设计——星型模型、雪花模型、星座模型

本文主要是介绍数仓维度设计模型、事实表、维度表、指标、宽表,常见的三种维度建模设计——星型模型、雪花模型、星座模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数仓维度设计模型

事实表

事实表,通常我们可以认为它就是数据表

它是指,发生在现实世界中的各种事件所形成的数据,如:

  • 商品购买(产生订单数据)
  • 账户创建(创建账户数据)
  • 退货行为(产生退货数据)

等等,一系列现实世界的操作,会反映在事实表中的记录之上。

维度表

维度表是事实表的补充。维度表的主键可以关联到事实表的外键之上。

维度表描述的是,现实事件信息的补充。

比如,在事实表中仅仅记录了你购买商品的时间戳,但是维度表可以对这个时间戳进行信息补充,如:

  • 当前日期
  • 当日是周几
  • 当日是否是节假日
  • 当日是第几季度
  • 当日是什么季节
  • 当日是全年第几天

等等的一系列额外数据的补充。

又好比,你订单中购买了商品,在事实表中可能记录的只是商品ID,但是基于维度表(商品细节),可以补充:

  • 商品厂家
  • 商品尺寸
  • 商品类别
  • 进价
  • 有效期
  • 供应商

等等一系列补充。

一般情况下,维度表也会分为:

  • 大型维度表
  • 小型维度表

小型维度表,就是如前面对日期做补充的维度表,这类维度表,一年的日期只需要365行数据,就可以对海量的数据进行补充。

大型维度表,就是如前面对商品做补充的维度表,商品越多,维度表内容越多。通常,大型维度表更会愿意被称为:

  • 字典表
  • 同时对应着,事实表也可以称之为 流水表
  • 那么,字典表就是对流水表里面某一列数据的说明。

指标

指标就是对数据分析的需求,或者说是目标Schema。

比如,某个指标是:月热销商品TOP10,这个指标就是一个目标。

在数仓开发中,开发某个指标,就是针对某个目标进行数据建模、分层、处理。

宽表

宽表是指一种大表,是将事实表和维度表进行合并形成的表。

比如日期维度,将对应的日期维度的列,直接添加到事实表中,或者商品维度的列也同步加入到事实表中。

那么这样事实表的列就非常的多,它所涉及到的维度基本都涵盖在了一张表中,俗称All in one

对于这样的表,就称为宽表

基于宽表,我们可以针对这一个表完成许多业务指标的开发。

常见的三种维度建模设计

星型模型

星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。

星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:

a. 维表只和事实表关联,维表之间没有关联;

b. 每个维表主键为单列,且该主键放置在事实表中,作为两边连接的外键;

c. 以事实表为核心,维表围绕核心呈星形分布;

在这里插入图片描述

雪花模型

雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表的,虽然这种模型相比星型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。

在这里插入图片描述

星座模型

星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。

前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。

在这里插入图片描述

这篇关于数仓维度设计模型、事实表、维度表、指标、宽表,常见的三种维度建模设计——星型模型、雪花模型、星座模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/640467

相关文章

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允