数仓建模流程
数仓建模简介
一句话总结
数仓建模中的“建模”是一个将数据有序组织和存储起来的过程,旨在提高数据的使用效率和降低使用成本。
详细描述
在数仓建模中,“建模”指的是构建数据模型,也就是数据的组织和存储方法。数据模型强调从业务、数据存取和使用角度合理存储数据,其目标是让数据有序地组织和存储起来,从而实现高性能、低成本、高效率、高质量的数据使用。
数据仓库建模的主要意义在于,通过合理的数据组织和存储方法,能够快速查询所需要的数据,减少数据的I/O吞吐,提高使用数据的效率。同时,它也能极大地减少不必要的数据冗余,实现计算结果复用,极大地降低存储和计算成本。
在数仓建模中,常见的模型包括维度模型等。维度模型通过事实和维度两个概念对复杂的业务进行呈现。其中,事实通常对应业务过程,而维度则对应业务过程发生时所处的环境。这种模型相对清晰、简洁,能够帮助人们更好地理解业务数据。
总之,数仓建模中的“建模”是一个将数据有序组织和存储起来的过程,旨在提高数据的使用效率和降低使用成本。
数仓建模流程
1. 业务调研
建模之前先梳理清楚,数据仓库涵盖哪些业务线,每个业务线包含哪些业务模块。我们可以参考阿里电商的这个图表进行梳理:

最终我们根据自己的业务线填写下面表格:
| 功能模板/业务线 | 业务1 | 业务2 | 业务3 |
|---|---|---|---|
| 模块1 | |||
| 模块2 | |||
| 模块n |
着重说明:建立一个好用的数仓,业务一定要非常熟悉。可能我们只有一个业务线(也可以是一个系统),这个业务线中包含哪些模块,开发系统的人,或者使用系统的业务人员是非常清楚的,可以沟通后进行梳理。
2. 需求调研
- 根据业务人员沟通需求,最终形成需求文档
- 开发需求需要哪些维度和度量
3. 数据域划分
-
数据域
业务过程和维度的抽象。
根据业务流程、根据系统、根据部门等等,需要注意的是,数据域的目的就是为更好的组织数仓中的数据,可以联想图书馆会把图书根据不同的专业放到不同的书架,只要可以更好的找到数据就可以划分为数据域。
常见的一个划分思路:比如是构建一个集团的数仓,那么就可以根据部门划分,如果是构建某个部门的数仓,就可以根据业务系统、流程来划分。 -
如何划分
根据业务流程、根据系统、根据部门等等,需要注意的是,数据域的目的就是为更好的组织数仓中的数据,可以联想图书馆会把图书根据不同的专业放到不同的书架,只要可以更好的找到数据就可以划分为数据域。 -
评判标准
划分数据域时,既能涵盖当前业务需求,又能在新业务进入时,无影响的进入已有数据域中或者扩展新的数据域。 -
参考阿里电商


4. 构建总线矩阵
- 做两件事
- 明确每个数据域下有哪些业务过程
- 业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度
-
总线矩阵模板

-
参考阿里电商

5.规范定义
- 规范定义
主要是定义指标体系,原子指标、修饰词、时间周期和派生指标。 - 指标体系
指标体系包含原子指标、派生指标、修饰类型、修饰词、时间周期。 - 原子指标/度量
原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务中不可再拆分的指标,具有明确业务含义的名词,如支付金额。 - 派生指标
派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。如原子指标:支付金额,最近1天海外买家支付金额则为派生指标(最近一天为时间周期,海外为修饰词,买家作为维度,而不是修饰词)。 - 修饰类型
是对修饰词的一种抽象划分。修饰类型从属于某个业务领域,如日志域的访问终端类型涵盖无线端、PC端等修饰词
6. 模型设计
主要包括维度即属性的规范定义,维表、明细事实表和汇总事实表的模型设计。
- 度量称为事实:我更喜欢把连续型的数值称为事实
- 环境描述称为维度:我更喜欢把离散型的字段称为维度。
维表和实时表模型设计内容较多,我们会放到后面讲解。
总结
根据我的经验,很多公司做数仓建模流程都和上面的类似,但又都不太相同,有的极其缩减,尤其是较小项目。因此我们在做的时候可以参考上面流程,但不要可以生搬硬套,有的时候甚至一个简单的事情,由于自己刻意要生搬硬套相关概念,导致迟迟不能入手开发。
一个简单的数仓项目,甚至可以简化到只要明确划分ods、dwd、dim、dws层级就可以使用。但是一个好用的数仓,显然就有更多的规范约束了。
相关文章:
数仓建模流程
数仓建模简介 一句话总结 数仓建模中的“建模”是一个将数据有序组织和存储起来的过程,旨在提高数据的使用效率和降低使用成本。 详细描述 在数仓建模中,“建模”指的是构建数据模型,也就是数据的组织和存储方法。数据模型强调从业务、数…...
Neo4j CQL语句 使用教程
CREATE命令 : CREATE (<node-name>:<label-name>{ <Property1-name>:<Property1-Value>........<Propertyn-name>:<Propertyn-Value>} )字段说明 CREATE (dept:Dept { deptno:10,dname:“Accounting”,location:“Hyderabad” })&#…...
STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8
目录 一、教程简介 二、驱动理论讲解 三、CubeMX生成底层代码 四、Keil5编写代码 五、实验结果 一、教程简介 本教程面向初学者,只介绍DS18B20的常用功能,但也能满足大部分的运用需求。跟着本教程操作,可在10分钟内解决DS18b20通信难题。…...
HTML 符号
HTML 符号 HTML(超文本标记语言)是一种用于创建网页的标准标记语言。它使用一系列的标签来描述网页的结构和内容。HTML 符号,通常指的是 HTML 标签,是构成 HTML 文档的基础。本文将详细介绍 HTML 符号的概念、种类、用途以及如何在网页设计中正确使用它们。 HTML 符号的概…...
编译后的MySQL安装
MySQL安装 1.下载网址2.下载方式3.配置配置环境变量修改配置文件初始化安装服务启动服务测试修改 Mysql 默认密码 1.下载网址 https://dev.mysql.com/downloads/mysql/2.下载方式 选择对应版本下载 mysql-xxx-winx64.zip,该压缩包为编译后文件,并非源码…...
Ubuntu安装Apache教程
系统版本:Ubuntu版本 23.04 Ubuntu是一款功能强大且用户友好的操作系统,而Apache是一款广泛使用的Web服务器软件。在Ubuntu上安装Apache可以帮助用户搭建自己的网站或者进行Web开发。为大家介绍如何在Ubuntu上安装Apache,并提供详细的教程和操…...
Nginx跳转模块之location与rewrite
目录 一、location模块与rewrite模块区别 二、location模块的基本介绍 1. location模块是什么? 2. 三种匹配类别 3. 常用的匹配规则 4. 匹配优先级 三、location模块使用实例 1.精准匹配优先级小于一般匹配的特殊情况 2 .解决方法 3. 实际网站使用中的三个匹配…...
oracle col命令
oracle col命令可以对列进行进行格式化,格式:col 列名 for(mat) 格式 例如: col owner for a100 设置owner列格式 col 列名:显示当前列的格式 SQL> col owner COLUMN owner ON FORMAT a100 SQL> clear column:清除所有列的格式 SQL> col o…...
ESP32接入扣子(Coze) API使用自定义智能体
使用ESP32接入Coze API实现聊天机器人的教程 本示例将使用ESP32开发板通过WiFi接入 Coze API,实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题,ESP32将通过Coze API与智能体进行通信,并返回对应的回复。本文将详细介绍了如…...
【JVM】如何判断对象是否可以被回收
引用计数法: 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 优点:实现简单,判…...
CloseableHttpResponse 类(代表一个可关闭的 HTTP 响应)
CloseableHttpResponse 类是 Apache HttpClient 库中的一个类,代表一个可关闭的 HTTP 响应。当你使用 HttpClient 发送请求时,你会得到一个 CloseableHttpResponse 实例,它包含了服务器的响应数据和状态。处理完响应后,你应该关闭…...
C语言编程规范及命名规则
C语言编程规范及命名规则 编码规范总原则:清晰、简洁、一致头文件函数标识符命名与定义变量宏、常量表达式注释排版与格式代码编辑编译其他设置 命名规则类型命名: 其他编译器配色 参考 编码规范 总原则:清晰、简洁、一致 清晰第一 清晰性是…...
Pika 1.5 - Pika Labs最新推出的AI视频生成工具
Pika 1.5是由Pika Labs最新推出的AI视频生成工具。通过简单易用的界面和强大的”Pikaffects”特效库,用户能通过上传图片或输入文本,快速生成具有专业质感和创意效果的视频内容。新版本强调低门槛创作,让普通用户能轻松制作出有趣、抽象、易于…...
Elon Musk 正式揭晓了特斯拉的Robotaxi和Robovan,这两款自动驾驶新车型成为发布会上的焦点
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
博客摘录「 springboot+netty+mqtt服务端实现」2024年10月11日
try {MqttPublishMessage mqttPublishMessage (MqttPublishMessage) mqttMessage;ByteBuf byteBuf mqttPublishMessage.payload();byteBuf.retainedDuplicate();ctx.writeAndFlush(mqttPublishMessage);} catch (Exception e) {e.printStackTrace();throw e;}...
Docker小白入门笔记
Docker 命令笔记 Docker Desktop 1.构建镜像 无缓存构建: docker build --no-cache -t image_name .普通构建: docker build -t image_name . 2.运行容器 docker run -d --name docker_name -p 9000:9000 --env-file "path\.env" image_name参数说明:…...
Unity 如何在 iOS 新增键盘 KeyCode 响应事件
1.定位到文件UnityViewKeyboard.mm同如下路径: 2.打开该Objective-C脚本进行编辑,找到关键函数: createKeyboard: - (void)createKeyboard {// only English keyboard layout is supportedNSString* baseLayout "1234567890-qwertyuiop[]asdfghjkl;\\zxcvbnm,./!#$%^&am…...
pytorh学习笔记——波士顿房价预测
机器学习的“hello world”:波士顿房价预测 波士顿房价预测的背景不用提了,简单了解一下数据集的结构。 波士顿房价的数据集,共有506组数据,每组数据共14项,前13项是影响房价的各种因素,比如&…...
让AI像人一样思考和使用工具,reAct机制详解
reAct机制详解 reAct是什么reAct的关键要素reAct的思维过程reAct的代码实现查看效果引入依赖,定义模型定义相关工具集合工具创建代理启动测试完整代码 思考 reAct是什么 reAct的核心思想是将**推理(Reasoning)和行动(Acting&…...
Linux系列-常见的指令(二)
🌈个人主页: 羽晨同学 💫个人格言:“成为自己未来的主人~” mv 剪切文件,目录 重命名 比如说,我们在最开始创建一个新的文件hello.txt 然后我们将这个文件改一个名字,改成world.txt 所以,…...
别再只用ARIMA了!用Facebook Prophet快速搞定业务时间序列预测(附Python实战代码)
用Facebook Prophet三行代码完成高精度业务预测:电商场景实战指南 当市场部门的同事又在周五下午5点发来"下周销售预测急用"的邮件时,你是否还在为ARIMA模型的参数调优焦头烂额?时间序列预测本应是数据科学中最具商业价值的技能之一…...
OPPO新时代板凳精神:解码长期主义研发体系与前沿技术人才战略
1. 从“板凳精神”到“微笑前行”:OPPO的研发哲学与人才战略最近,OPPO在五四青年节发布的那支名为《板凳》的品牌片,以及随之公布的超过2000人的技术研发招聘计划,在科技圈里引发了不小的讨论。很多人乍一看,觉得这又是…...
Haneke与AFNetworking集成实战:构建强大的iOS图片加载系统
Haneke与AFNetworking集成实战:构建强大的iOS图片加载系统 【免费下载链接】Haneke A lightweight zero-config image cache for iOS, in Objective-C. 项目地址: https://gitcode.com/gh_mirrors/ha/Haneke 在iOS应用开发中,图片加载与缓存是影响…...
别再只会插卡开机了!手把手带你用APDU命令探索手机SIM卡里的文件迷宫
解码SIM卡文件系统:用APDU命令探索移动通信的微观世界 当你把SIM卡插入手机时,它就像一把打开移动网络大门的钥匙。但鲜为人知的是,这张小小的芯片内部运行着一个完整的文件系统,其复杂程度堪比微型操作系统。本文将带你用APDU命令…...
重新定义开源协作:GitHub中文界面如何突破语言认知边界
重新定义开源协作:GitHub中文界面如何突破语言认知边界 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub中文汉化插件…...
技能图谱:构建结构化知识体系,实现高效学习与成长
1. 项目概述:一个技能图谱的诞生与价值在技术社区里,我们经常看到各种“Awesome List”——那些按领域整理的工具、库和资源清单。它们很有用,但总感觉缺了点什么。直到我偶然在 GitHub 上看到了tenequm/skills这个仓库,它给我带来…...
ContextMenuManager:3分钟彻底清理Windows右键菜单的免费神器
ContextMenuManager:3分钟彻底清理Windows右键菜单的免费神器 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否经常在Windows右键菜单中迷失方向…...
Android MediaCodec 编码实战:从 Camera 采集到 ByteBuffer 编码,生成 MP4 文件
1. Android Camera数据采集与YUV格式解析 在Android平台上使用Camera API采集视频数据是编码流程的第一步。我遇到过不少开发者在这一步就卡壳,主要问题集中在Camera2 API的复杂配置和YUV数据格式的理解上。这里分享几个实战经验: Camera2 API的基本工作…...
【麒麟系统-解释器错误:权限不足】
执行脚本后发现无法执行权限不足查看发现当前是有执行权限的;最后发现可能是有安全限制: 执行命令getstatus 执行这个命令即可:sudo setstatus softmode...
中华民族站起来了,《AI驱动上下五千年:从结绳记事到智能纪元》第三章:周礼分封——面向服务的架构(SOA)首次实践
第三章:周礼分封——面向服务的架构(SOA)首次实践 1.历史现场:周公的架构革命 时间:公元前1046年,周朝建立之初地点:镐京(今西安)明堂人物:周公旦、各诸侯国君…...
