news 2026/9/2 6:00:04

数仓建模-

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数仓建模-

范式建模 维度建模

范式建模(Inmon) 维度建模(Kimball)

数仓如何选择 建模方案

为什么现在明细层数仓也用维度建模

以前用传统数据库(Oracle/DB2),存储很贵,所以要用3NF精打细算消除冗余。现在用云数仓(如Snowflake、MaxCompute、Hologres),存储成本极低。很多公司直接在明细层(DWD)就用维度建模的宽表(大宽表),把冗余字段带进去,用空间换时间

ddl角度对比 范式建模 维度建模

维度建模 ddl对比

以“业务分析”为中心,把“谁、什么、何时”做成维度表(Dimension),把“度量值”做成事实表(Fact)。允许冗余,目的是查询极快

范式建模 ddl对比

像做“乐高零件”一样,按业务实体(人、货、单)拆得干干净净,零冗余。你要看完整订单,必须把零件拼起来(多表Join)。

Data Vault建模 ddl对比

Data Vault 把任何业务数据强行拆成三种表:

  1. Hub(中心表):只存业务主键(如customer_id,order_id)。就相当于一个“纯ID索引目录”,不存任何描述性文字。

  2. Link(链接表):只存业务关系(如“这个订单_包含了_哪个商品”)。就是多对多关系的纯ID组合。

  3. Satellite(卫星表):存属性的变化历史(如客户改名、订单状态变更为已发货)。它是拉链表(SCD Type 2)的极致形态,记录每个属性的起止时间。

Data Vault 会拆成 5 张表(注意观察字段):

gmv为例 对比sql

范式建模

维度建模

Data Vault

-- Data Vault 查询:需要处理时态(Temporal)+ 关系(Link)+ 哈希键(Hash Key) WITH -- 1. 找出 2026年8月 期间有效的“手机”类商品(处理拉链历史) valid_product_hk AS ( SELECT product_hk FROM sat_product sp WHERE sp.category = '手机' -- 品类过滤 AND sp.load_dts <= '2026-08-31 23:59:59' -- 拉链开始时间 <= 查询日期 AND sp.load_end_dts > '2026-08-01 00:00:00' -- 拉链结束时间 > 查询日期 AND sp.rec_src = 'mysql_binlog' -- 防重(有些DV实现会有重复) GROUP BY product_hk -- 因为拉链表可能有多条记录,去重取最新或有效的那条 ), -- 2. 通过 Link 表,找出这些手机对应的所有订单 ID(关系解耦) order_hk_with_phones AS ( SELECT lop.order_hk FROM link_order_product lop INNER JOIN valid_product_hk vp ON lop.product_hk = vp.product_hk ), -- 3. 查询订单明细卫星表,捞取 8月份 已完成 的订单金额(再次处理时态) valid_order_gmv AS ( SELECT sod.order_hk, SUM(sod.amount) AS gmv -- 金额已在卫星表冗余 FROM sat_order_detail sod INNER JOIN order_hk_with_phones owp ON sod.order_hk = owp.order_hk WHERE sod.order_status = '已完成' AND sod.load_dts <= '2026-08-31 23:59:59' AND sod.load_end_dts > '2026-08-01 00:00:00' -- 关键:下单时间通常也记录在卫星表的属性里,这里必须再加一道时间过滤 AND sod.order_dt >= '2026-08-01' AND sod.order_dt < '2026-09-01' GROUP BY sod.order_hk ) -- 4. 最终汇总 SELECT SUM(gmv) AS total_gmv FROM valid_order_gmv;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 5:59:58

层次数据库性能瓶颈排查指南:从日志分析到索引优化的完整路径

层次数据库管理系统在企业级应用中仍占据重要地位&#xff0c;尤其是在银行核心系统、通信计费系统和大型制造业MES等场景中&#xff0c;层次数据模型的固有优势使其难以被关系型数据库完全替代。然而&#xff0c;层次数据库的性能排查比关系型数据库复杂得多。嵌套的父子结构、…

作者头像 李华
网站建设 2026/9/2 5:59:23

苍穹外卖1

项目概述、环境搭建软件开发整体介绍软件开发流程角色分工软件环境开发环境(development):开发人员在开发阶段使用的环境&#xff0c;一般外部用户无法访问 测试环境(testing):专门给测试人员使用的环境&#xff0c;用于测试项目&#xff0c;一般外部用户无法访问 生产环境(pro…

作者头像 李华
网站建设 2026/9/2 5:59:02

IMX586点亮指南:从硬件时序到平台适配的实战排查清单

简介&#xff1a;面向嵌入式驱动开发工程师与图像传感器应用开发者&#xff0c;这份资源围绕索尼IMX586 4800万像素CMOS传感器&#xff0c;提供与Linux V4L2框架对接的完整驱动参考实现。包内共40个文件&#xff0c;以C源文件、头文件、目标文件、Makefile构建脚本为主&#xf…

作者头像 李华
网站建设 2026/9/2 5:55:47

AI科研绘图工具哪家服务好:按图型和学科挑更省事

摘要&#xff1a;本文围绕科研绘图这一具体场景&#xff0c;把沁言学术、BioRender、GraphPad Prism 放在同一场比较&#xff0c;按图型需求、学科适配、使用成本几个维度梳理选择思路。结论是先分清要画机制图还是数据图&#xff0c;再决定用哪类工具&#xff0c;模板能力与统…

作者头像 李华
网站建设 2026/9/2 5:54:54

Python数据分析实战:爬取与可视化迈克尔·杰克逊Billboard榜单数据

在流行音乐史上&#xff0c;迈克尔杰克逊&#xff08;Michael Jackson&#xff09;是一个无法绕过的名字。他不仅是“流行音乐之王”&#xff0c;更是一位用作品和舞台表现力重新定义了流行音乐标准的艺术家。对于开发者、数据分析师或任何对流行文化数据感兴趣的人来说&#x…

作者头像 李华
网站建设 2026/9/2 5:54:18

STM32H743实数IFFT实现:从频域处理到时域信号的高精度还原

简介&#xff1a;本资源是一套面向嵌入式DSP开发者的实数浮点FFT逆变换工程实现&#xff0c;专为STM32H743高性能Cortex-M7处理器设计&#xff0c;解决实时信号处理中频域数据还原为时域信号的核心需求&#xff0c;适用于通信、音频分析、工业传感等对计算精度与速度有双重要求…

作者头像 李华