宽表:数据仓库 - “宽表”之争?

article/2025/10/12 0:47:40
        昨天在技术交流群里一个问题引发了激烈的讨论,我决定把它记录下来。

问题如下:DWD 中有宽表么?

        作为扫盲文章,基础知识我们再普及一下,先介绍下基础相关概念。

数仓分层(来自:个人理解)

        ODS、DWD、DWS、ADS 等,具体含义不做解释,数仓分层是大家为了抽象业务,简化计算,从设计上遵循高内聚低耦合的思想,经过漫长积累,业界普遍遵从的逻辑分层。初入数仓行业你可能会被这些东西限制住,但当你融会贯通时就会做到活学活用,代码无分层,心中有分层。注意事项,如果考虑分层了,那就要严格遵守,有相关控制手段,文档规范、开发工具等。

维度表

        争议较小,不做过多解释。

事实表(来自:个人理解 + 某篇博客)

        错误认知:事实表:大家习惯放在 DWD,久而久之认为:DWD = 事实明细表。
        维度建模将业务抽象成事实和维度两个概念。事实就是指具体的度量值,维度就是观察这一事实的角度。
事实表的类型:
        事务事实表:记录了业务最明细的数据。特点是一旦发生不会再变化。比如,商品交易事务事实、交易流水,操作日志等。
        周期快照事实表:具有规律性的、可预见的时间间隔来记录事实。比如 库存日快照表。
        累积事实表:用于跟踪业务事实的变化,存储了订单从下单到打包到发货到签收各个业务阶段的时间点数据。记录也会随着过程的变化被修改。

粒度(来自:《大数据之路:阿里巴巴实践》)

        事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度:一种是所表示的具体业务含义。

宽表(来自:个人理解)

        宽表二字的理解,字段相对来说多的表,个人觉得无其他特殊含义,因为太抽象我们需要把它具体一下, 自己的观点也是建立在这个具体上的 我这里姑且将宽表的含义进行拆分:大表、汇总宽表
        汇总宽表:大家经常说的宽表、自己工作经验的理解宽表、目前业界共识度比较高的宽表叫法
        大表:字段超多的表,当然也可能包含汇总宽表

汇总宽表作用&目的

        目的的在于方便后续使用,减少关联等操作,可直接用于数据分析、报表下钻等。宽表会尽量满足多维,多度量,在技术上也会使用退化维度(提前将维度冗余到表中,减少关联,考虑缓慢变化维的影响,也叫渐变维度)等操作。

个人结论

        DWD 中不存在普遍认为的宽表(汇总宽表),存在大表是可能的,范围上:宽表(标题的宽表) >= 大表 >= 宽表(汇总宽表)
        本质区别:事实明细表中基本无聚合属性字段(从数据源带过来不算),在拼接宽表时,为了满足维度一致,必然有聚合行为(包含 sum(),count(),max(),min(),first() 等)。宽表(汇总宽表)必然会有聚合属性。个人认为可以通过有无聚合属性来区分一下。

激烈讨论的经过(各位多有得罪,对错仅代表作者自己的观点)

作者支持的观点

作者不支持的观点

(如果你理解了或表示赞同可以帮忙点个赞,谢谢!)

http://chatgpt.dhexx.cn/article/5HMXEVDf.shtml

相关文章

Elasticseach:从微服务架构演变到大宽表思维的架构转变

序言 图示:Elasticsearch 在DB-Engine综合排名第8 Elasticsearch 简称"ES”, 在DB-Engine 综合排名第8,已经持续了相当长的时间,按照当下热度应该会继续保持或者上升一个名次;ES在多数工程师印象中最深刻可能是ELK三件套或者…

9.Flink实时项目之订单宽表

1.需求分析 订单是统计分析的重要的对象,围绕订单有很多的维度统计需求,比如用户、地区、商品、品类、品牌等等。为了之后统计计算更加方便,减少大表之间的关联,所以在实时计算过程中将围绕订单的相关数据整合成为一张订单的宽表…

数仓建模—宽表的设计

宽表的设计 高内聚低耦合 宽表是数仓里面非常重要的一块,数仓是分层的,这是技术进步和时代变化相结合的产物,数仓的分层式为了更好地管理数仓以及更加高效地进行数据开发。 宽表主要出现在dwd 层和报表层,当然有的人说dws 层也有…

基于宽表的数据建模应用

一、业务背景 1.1 数据建模现状 互联网企业往往存在多个产品线,每天源源不断产出大量数据,这些数据服务于数据分析师、业务上的产品经理、运营、数据开发人员等各角色。为了满足这些角色的各种需求,业界传统数仓常采用的是经典分层模型的数…

数据仓库宽表

1. 构建宽表的目的 讲宽表我想从为什么需要宽表入手,而不是一上来就抠概念。因为我觉得一门知识叫什么名字并不是最核心的,关键是搞清楚它的诞生背景以及如何在特定场景用好它。 构建宽表的目的很简单,就是为了"一站式"尽可能多的展示我们需要…

宽表, 窄表, 维度表, 事实表的区别

在数据开发里, 会涉及到一些概念: 宽表, 窄表, 维度表, 事实表 宽表: 把多个维度的字段都放在一张表存储, 增加数据冗余是为了减少关联, 便于查询. 查询一张表就可以查出不同维度的多个字段窄表: 和我们 mysql 普通表三范式相同, 把相同维度的字段组成一张表, 表和表之间关联查…

[转]科普 | 什么是宽表?

科普 | 什么是宽表?一文带你了解 数据仓库宽表_数据宽表_吕归尘0的博客-CSDN博客 一、什么是“宽表”? “宽表”从字面上的意思就是字段(列)比较多的数据库表,是通过关联字段将多个业务主题相关的数据表进行挂接组装…

数仓建模,宽表是什么?如何设计?

数仓建模,宽表是什么?如何设计? 宽表的设计为什么要建设宽表宽表的好处和不足如何设计宽表总结 宽表的设计 其实宽表是数仓里面非常重要的一块,宽表主要出现在dwd 层和报表层,当然有的人说dws 层也有宽表,…

线性代数笔记22——特征值和特征向量

特征向量 函数通常作用在数字上,比如函数f作用在x上,结果得到了f(x)。在线性代数中,我们将x扩展到多维,对于Ax来说,矩阵A的作用就像一个函数,输入一个向量x,通过A的作用,得到向量Ax。…

特征值和特征向量意义

本文转载自https://blog.csdn.net/fuming2021118535/article/details/51339881,版权问题请联系博主删除 在刚开始学的特征值和特征向量的时候只是知道了定义和式子,并没有理解其内在的含义和应用,这段时间整理了相关的内容,跟大家…

特征值和特征向量的几何含义理解

在刚开始学的特征值和特征向量的时候只是知道了定义和式子,并没有理解其内在的含义和应用,这段时间整理了相关的内容,跟大家分享一下; 首先我们先把特征值和特征向量的定义复习一下: 定义: 设A是n阶矩阵&am…

线性代数之——特征值和特征向量

线性方程 A x b Axb Axb 是稳定状态的问题,特征值在动态问题中有着巨大的重要性。 d u / d t A u du/dtAu du/dtAu 的解随着时间增长、衰减或者震荡,是不能通过消元来求解的。接下来,我们进入线性代数一个新的部分,基于 A x …

特征值和特征向量概述-面试必问3(含特征值、向量意义)

特征值和特征向量(Eigenvalues and eigenvectors) 在线性代数中,一个线性变换的特征向量(eigenvector 或者 characteristic vector)是一个非零向量。将线性变换应用在它上面,它最多以一个标量因子进行伸缩…

java 如何实现深拷贝

1、什么叫Java浅拷贝?  浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型)&…

单例模式之枚举实现

如果你没有学过单例模式,请点击:确保对象的唯一性——单例模式。 有很多网友留言说我漏掉了一种非常重要的Java语言的单例模式实现方式——枚举。^_^ 这篇姗姗来迟的博文将弥补这个“巨大的”缺陷。^_^~~~~~~~~~~~ 在Java语言中,如果综合考虑…

vue实现购物车功能

随着时代发展&#xff0c;网购成了人们必不可少的一部分&#xff0c;所以我们常常遇到要实现购物车功能&#xff0c;如下图&#xff0c;我们来分析一下 下图所示页面: 首先&#xff0c;我们通过ElementUI中的<el-table>标签来实现页面的呈现。 其次&#xff0c;我们可以看…

css实现轮播图

轮播图&#xff1a;就是多张图片按照一定的时间和顺序依次从某个窗口来向用户展示图片 轮播图的实现代码&#xff1a; 1&#xff09;创建一个容器来进行轮播图的展示 这里的容器就是最外部的盒子 注意最外部盒子设置宽高时要与我们进行展示的图片的宽高保持一致&#xff0c…

RabbitMQ实现延迟队列的方式

1.背景 最近在做类似拍卖系统的上架功能&#xff0c;卖家上架物品以后&#xff0c;例如到期时间24小时或者48小时&#xff0c;如果无竞拍者或者购买者&#xff0c;则物品自动下架到用户的邮件中。诸如电商用户下单&#xff0c;30分钟未支付&#xff0c;则自动取消订单&#xff…

接口的实现详解

接口 接口就是定义的规则&#xff0c;规范。 声明类时需要使用的关键字时class&#xff0c;声明接口的关键字时interface&#xff1b; 接口本身就是抽象的&#xff0c;需要一个实现类去实现接口中定义的内容。 接口当中不能定义方法&#xff1a; 接口本身就是抽象的 所在我们…

Qt实现简易计算器

目录 写在前面 一、设计思路 效果展示&#xff1a; 二、功能实现 三、设计代码 1.mainwindow.cpp 2.calculate.cpp 写在前面 上篇文章写了C中如何实现简单的计算器&#xff0c;先用C写看来我的选择是正确的&#xff0c;明白了其中的原理再用Qt实现是水到渠成的事&#…