当前位置: 首页 > news >正文

带你认识:数据仓库宽表~~~浅显易懂

1. 构建宽表的目的
讲宽表我想从为什么需要宽表入手,而不是一上来就抠概念。因为我觉得一门知识叫什么名字并不是最核心的,关键是搞清楚它的诞生背景以及如何在特定场景用好它。
构建宽表的目的很简单,就是为了"一站式"尽可能多的展示我们需要的数据。因为在数据库中,不同的数据通常是存放在不同的数据表中的,关联起来非常不方便,既费时又费力还容易犯错。那么如果我们将数据提前串联好存在一张数据表中,岂不是完美的解决了这个问题?由于数据表一般是通过二维结构(行列)展示数据,既然要尽可能多的展示信息,那么相对其他普通表拥有的属性更多,需要存储属性的字段更多,所以表就变宽了。

2. 什么是宽表
接下来再回归概念,什么是宽表,我从两个维度来解释。
我们先对“宽”做一个定量,一张数据库表,超过多少个字段就叫宽表?假设我们设置100为分界线,一张表超出100个字段就叫宽表,那么宽表的第一个定义就来了。

1. 凡是字段数量超过100个的数据库表,我们将其定义为宽表。
1
上面是比较简单直观的定义,我个人觉得没啥毛病,但是如果就这么拿出去和别人说,显得有点粗糙,可能有人觉得逼格不够高,所以换个角度,我们可以从结果逆推概念:


可以得到关于宽表的两种解释:

2. 存放核心业务实体不同维度属性的数据库表,可以称之为宽表

3. 存放核心业务实体在业务履行流程中的信息&上下游的关联信息,可以称之为宽表
1
2
3
先解释概念2, 举个列子, 在物流公司中,运输单承载了很多业务信息,包括运单的基本信息(创建日期,大概重量等)、运单的财务信息、运单的货物信息、运单的取派信息等等,这些数据在业务系统的数据库中是分散在不同的数据表中的(甚至不同的系统),如果我们要想一站式看到我们关注的不同维度的核心属性,要先确定数据中在哪里,然后再写代码关联到我们想看的数据,效率低,风险高。
那么,我们可以在数据仓库中将相关的数据提前关联好,然后加载到一张“运单宽表”中,这样,下游的用户如果需要看运单相关的信息,只需要访问一张表就可以了, 是不是更方便更高效了?


类似于我们经常听说的用户画像,也是基于用户这个核心实体,将用户相关的基础数据&各个领域的行为数据做了加工,然后统一存放在标签表中,落地成了一张宽表。


再来解释概念3, 同样举运单的例子,在快递的履行流程中,我们有时候期望能够一站式追踪某个核心实体的状态,那么我们可以基于关注的核心实体将其核心属性&上下游核心属性串起来,落地为一张宽表。

3. 如何构建宽表
以第三种宽表为例,分为下面几步:

1、 选取想要构建宽表的业务流程,梳理业务流程中的所有活动;
2、 梳理参与这些活动的核心业务实体;
3、 选择业务最关注的实体来构建宽表;
4、 确定宽表的数据颗粒度;
5、 选取属性
    1、核心实体相关的属性
    2、上下游相关联的核心实体的属性(按需选择)
    3、先关的维度属性(时间、地点、客户、产品等)(按需选择)
    4、统计标签(按需选择)
6、 设计Mapping & 测试用例
7、 实施、测试、上线、回归测试
1
2
3
4
5
6
7
8
9
10
11
4. 宽表的缺点
1、 宽表做了大量的维度退化,一旦维表的属性发生了缓慢变化,那么需要重新刷新宽表的历史数据;
2、 宽表是多数据来源,一旦上游业务发生了调整,宽表必须随着调整,往往费时费力。
3、 宽表做了大量冗余,相对于范式设计的表,需要更多的存储空间,且在跨平台推数时(例如从Hdfs->ClickHouse),可能会对下游集群造成较大影响
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_41650737/article/details/125135827

相关文章:

带你认识:数据仓库宽表~~~浅显易懂

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

记录|MessageBox.Show()的使用

目录 前言一、解析1.1 代码1.2 具体图片解析 更新时间 前言 遇到了其他人写的MessageBox.Show()的用法,有点懵,特此记录。 一、解析 1.1 代码 MessageBox.Show("登录失败!", "用户登录", MessageBoxButtons.OK, MessageBoxIcon.E…...

LabVIEW软件定制开发公司的前景如何?

LabVIEW软件定制开发公司的前景在当前的技术发展环境下展现出一定的潜力与挑战。这一领域的市场前景主要受到工业自动化、物联网、智能制造等技术趋势的推动,同时也受到行业竞争、技术更新以及人才市场的制约。 ​ 市场需求与增长潜力 随着工业4.0、物联网和智能制…...

vue3列表页搜索条件封装

搜索框组件 封装常用搜索框组件,类型有: input(默认值)selectselectV2 (value/label键值对数组)datePickeryear 集成新增、修改、删除、导入、导出按钮,支持slot自定义其他按钮封装搜索、重置按钮封装按钮权限封装导入弹框 本例仅…...

十三、切片的复制

1、使用函数copy 注意点:复制前必须再声明一个与要复制对象类型相同的切片 var cheeses make([]int, 5)cheeses[0] 1cheeses[1] 2cheeses[2] 3cheeses[3] 4cheeses[4] 5var myCheeses make([]int, 5)copy(myCheeses, cheeses) 使用copy函数将cheeses的数据…...

Java Stream API 的应用:提取并处理多属性集合

Java Stream API 是一个功能强大的工具,可以帮助开发者高效地处理集合数据。本篇博客将专注于一个具体的应用示例,即如何使用 Java Stream API 从一个对象列表中提取多个属性值,并进行过滤和去重。这种技术在处理需要从多个字段中提取数据的情…...

【技术方案】智慧城市大数据平台技术方案(Doc原件)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…...

vue项目中引入字体文件样式

需求:关于一些样式需要自定义的,所以需要ui提供字体文件,然后引入项目中,就可实现自定义 首先看一下实现效果图: 第一步:新建一个字体样式文件用于放字体文件和css样式 font.css文件: /* 数字特殊字体 */ font-face {/*给字体命名*/font-family: DINCondBold;/*引入字体文件*…...

Android 11强制App固定user_rotation方向显示

Android11 强制App按照user_rotation方向显示。 diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java index b1d349d8e93d..f7fd2983c668 100644 --- a/services/core/java/com/an…...

Harbor仓库push显示

背景: 在做测试时发现harbor仓库端口开放这,却一直登录不上去,重启harbor资源包docker-compose还是不行,修改了docker.service文件不行,json文件也不行,以下是涉及到的命令和报错(好像是这个&am…...

Windows 上设置 MySQL 的主从复制

Windows 上设置 MySQL 的主从复制 一、前言1. 环境准备2. 主服务器配置3. 从服务器配置6. 测试复制7. 注意事项 一、前言 在 Windows 上设置 MySQL 的主从复制涉及几个步骤。下面是一个详细的指南,帮助你实现这一过程。 1. 环境准备 安装 MySQL: 确保你…...

鸿蒙内核源码分析(原子操作篇) | 谁在为原子操作保驾护航

基本概念 在支持多任务的操作系统中,修改一块内存区域的数据需要“读取-修改-写入”三个步骤。然而同一内存区域的数据可能同时被多个任务访问,如果在修改数据的过程中被其他任务打断,就会造成该操作的执行结果无法预知。 使用开关中断的方…...

vue3+ts封装axios以及解决跨域问题

目录 一、前言二、封装axios三、 解决跨域四、调用接口五、运行结果 一、前言 前端请求后端数据时,会用到axios,但是如果不将axios封装好,会导致代码冗余 二次封装的好处如下: 求头能统一处理便于接口的统一管理解决回调地狱配置…...

各厂家BI对比

帆软BI、奥威BI、永洪BI、思迈特BI、亿信华辰BI是国内知名的BI产品,不少企业在选型BI软件时都需要对这些BI软件进行了解,从中选择适合自己的一款。经过过年的发展,这些BI(商业智能)软件各自在多个行业中都有广泛的应用…...

SQL - 触发器

触发器是在插入、更新和删除语句前后自动执行的一堆SQL代码,但是触发器被触发后只会执行一次,通常我们使用触发器增强数据的一致性。创建触发器 -- 创建触发器 drop trigger if exists payments_after_insert; delimiter $$ -- 在 payments表 insert 之后…...

Redis中缓存穿透、缓存击穿、缓存雪崩的详解

如何理解Redis缓存的穿透、击穿、雪崩问题: 缓存穿透 是指缓存中和数据库中都没有数据,而用户不断访问,导致这个不存在的数据每次请求都要到存储层去查询,这样失去了意义。 缓存穿透的解决方案有哪些? 缓存null值布隆过滤增强…...

[Meachines] [Medium] Popcorn SQLI+Upload File+PAM权限提升

信息收集 IP AddressOpening Ports10.10.10.6TCP:22,80 $ nmap -p- 10.10.10.6 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.1p1 Debian 6ubuntu2 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: …...

【Linux】python进程管理之supervisor安装使用教程

安装supervisor pip install supervisor生成配置文件 echo_supervisord_conf > /etc/supervisord.conf修改配置文件 vim /etc/supervisord.conf[unix_http_server] file/run/supervisor.sock ; the path to the socket file[supervisord] logfile/var/log/supervisord.log…...

BEM架构

视频 总结&#xff1a; BEM架构&#xff1a;一个命名类的规范而已&#xff0c;说白了就是如何给类起名字使用sass的目的&#xff1a;在<style>中模块化的使用类名&#xff0c;同时减少代码数量 1、 BEM架构 &#xff08;通义灵码查询结果&#xff09; BEM (Block Ele…...

物联网(IoT)详解

物联网&#xff08;IoT&#xff09;详解 1. IoT定义简介2. IoT工作原理3. IoT关键技术4. 物联网与互联网区别5. IoT使用场景6. 开源物联网平台7. 参考资料 1. IoT定义简介 首先第一个问题&#xff0c;什么是物联网&#xff08;IoT&#xff09;? 物联网&#xff08;英文&#…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...