(学习笔记)数仓建模

news2024/10/4 20:20:28

数仓建模

  • OLAP
  • 数仓分层
  • 数据模型
  • 数据模型建设方法
  • 模型建设具体流程
  • 模型数据域
  • 事实表设计
    • 事实表
    • 拉链表
  • 数据模型规范
    • 表命名(采用阿里one-data设计)
    • 字段命名(采用阿里one-data设计)
    • 数据模型标注规范
  • 数据模型发展周期

OLAP

OLTP:概念全称OnLine Transaction Processing,中文名:联机事务处理系统,主要是执行基本日常的事务处理,比如数据库记录的增删查改,例如mysql、oracle

OLAP:全称OnLine Analytical Processing,中文名:联机分析处理系统,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,例如、ClickHouse、Doris、Kylin

MOLAP:MOLAP将OLAP分析所用到的多维数据物理上存储的形式,形成"立方体"的结构(cube),更注重预计算
Kylin:
优点:支持离线数据规模大、支持标准sql,性能高,查询速度快
缺点:不够灵活,无二级索引、需要cube与计算,后期维护成本大
Druid:
优点:支持大规模数据、高性能,列存压缩,预聚合
缺点:维度之间不能随意组合,不能自由查询、不支持join,sql支持很弱

ROLAP:ROLAP无需预计算,直接在构成多维数据模型的事实表和维度表上进行计算
优点:列式存储,通过数据引擎使得数据存储本地化来提高性能,具有单机版超高性能
缺点:易用性较弱,SQL语法不标准,join的支持不好,维护成本高
ClickHouse
优点:支持的计算数据规模大(非存储引擎)、灵活性高,随意查询数据、
易用性强,支持标准SQL以及多表join和窗口函数、处理方式简单,无需预处理,全部后处理,没有冗余数据
缺点:当查询复杂度高且数据量大时,可能分钟级别的响应。同时其不是存储引擎,因此没有本地存储。

Spark/lmpala/Presto
优点:支持的计算数据规模大(非存储引擎)、灵活性高,随意查询数据、
易用性强,支持标准SQL以及多表join和窗口函数、处理方式简单,无需预处理,全部后处理,没有冗余数据
缺点:当查询复杂度高且数据量大时,可能分钟级别的响应。同时其不是存储引擎,因此没有本地存储。

HOLAP:由于MOLAP和ROLAP有着各自的优点和缺点,为此一个新的OLAP结构——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP两种结构的优点结合起来
Doris
优点:支持高并发场景、秒级/毫秒级查询、支持标准化sql,支持大款表和多表join
缺点:发展不够成熟,稳定度待提升
在这里插入图片描述

数仓分层

数仓为什么分层:
清晰数据结构:数仓每一层都有对应的作用,方便在使用时更好定位与了解
数据血缘追踪:清晰知道表/任务上下游,方便排查问题,知道下游哪个模块在使用,提升开发效率及后期管理维护
减少重复开发:完善数仓好中间层,减少后期不必要的开发,从而减少资源消耗,保障口径、数据统一
把复杂问题简单化:将复杂任务拆解成多个步骤来完成,每一层处理单一步骤,当数据问题出现时候,只需从问题起点开始修复

如何分层:
ODS接入层:全称Operational Data Store,ODS层是最接近数据源的一层,从数据源(api、数据库等)将数据同步数仓中,中间不做任何处理操作
DWD明细层:全称Data Warehouse Detail,是数仓明细数据层,对ODS层的数据进行关联,清洗,维度退化(将维度表中维庶数据放入明细表中),转换,主题域建设等操作
DWM轻度汇总层:全称Data WareHouse Middle,轻度汇总层数据仓库中DWD层和DWS层之间的一个过渡层次,是对DWD层的生产数据进行轻度综合和汇总统计(可以把复杂指标前置处理),提升公共指标的复用性,减少重复加工
DWS汇总层:全称Data WareHouse Servce,按照主题域、颗粒度(例如买家、卖家)划分,按照周期粒度、维度聪合形成指标较多的宽表,用于提供后续的业务查询,数据应用,最重要一点需要在DWS层完成指标口径统一及沉淀
ADS应用层:全称Applacation data service,按照应用域,颗粒度划分(例如买家、卖家)划分,按照应用主题将对应数据标签补充至应用层,最终形成用户画像及专项应用

数据模型

业务模型:也称企业模型,它为企业提供一个框架结构,以确保企业的应用系统与企业经常改进的业务流程紧密四配,它是从纯业务角度对企业进行业务建模,特指某业务具体流程环节例如客服业务-客服评价的数据模型。

概念模型:对业务模型进行抽象处理成一个个业务概念实体,最常见的就是E-R模型,与具体数据库系统无关,必须转化为逻辑或者物理数据模型才能在数据库系统中实现,概念模型就像是er图记录整体概览,包括了每一步操作,像是大图展示。

逻辑模型:概念模型中的概念实体以及实体之间的关系在关系型数据库上的逻辑化。

物理模型:面向计算机的,因此与具体的数据库系统、操作系统以及计算机硬件都相关的,是逻辑数据模型在这个物理平台上的物理化,例如存储的元数据信息(表名、字段名、存储信息、路径等等)。

数据模型建设方法

维度模型(新):按照事实表、维表来构建数据仓库模型的方法,称为维度建模。根据维度表与事实表之间的链接方式,分为星型模型和雪花型模型。
星型模型:因为数据的冗余所以很多查询不需要做外部连接,因此一般情况下效率比雪花模型高,设计与实现比较简单。
只需要确定主键
不需要在外部进行连接,大大提高性能实现高度并行化
容易理解,只需要看关联条件和血缘关系就能确定模型
雪花模型:由于去除了冗余,有些统计就需要通过表的连接才能产生,所以效率不一定有星型模型高。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。
需要主外键来确立管理
雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低,不能并行化
过多的连接使得开发和后期维护都增大难度

三范式建模(旧)
遵循三范式建模(第一范式:每个属性都不可再分,第二范式:非主字段都完全依赖于主键,第三范式:非主键字段不能依赖于其他非主键字段)

三范式与维度建模区别
考虑角度不同:
三范式严格遵循每一范式内容,按照范式内容建模
kimball建模(维度维度),按照多个维度进行分析,更多按照星形模型

出发点不一样:
3NF建模(三范式建模),考虑自上而下建模(这里的上指的是上游数据源,先拥有dw层再往上进行设计,瀑布模型,不易于后期扩展)
kimball建模(维度维度),考虑自下而上建模(这里的下指的是数据集市),先拥有数据集市来设计dw层,敏捷模型,易于扩展易于后期维护及使用)

模型精度不一样:
三范式模型由于没有分层概念冗余低数据精度高
kimball建模((维度维度),由于多层建设导致冗余高数据精度低

模型建设具体流程

模型设计基本原则
在这里插入图片描述
维度建模设计大图
在这里插入图片描述
模型建设过程
在这里插入图片描述
总线矩阵:指以一致性维度为列,以业务过程为行,构建业务的数据矩阵,通过标记表示该维度与业务过程的相关性

数据域:对当前业务场景或业务sop进行拆分完成建设
事实表设计:围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。
维度:对当前场景描述及补充
颗粒度:数据域下场景用户再进行细致拆分(例如用户可拆分为买家或卖家),颗粒度必须拆分为不可拆分的状态(例如用户拆分为买家,买家不可拆分)
度量值:对场景下数值类型的数据记录

模型数据域

概念:指面向业务分析,将业务过程或者维度进行抽象的集合。其中业务过程指企业活动中的事件,例如下单、退款、加购等,维度即度量的环境,例如下单事件中的买家。
在这里插入图片描述
跨数据域:背景:例妆DWS、ADS出现跨数据域(例如该模型既用于风控又用于用户画像)情况,需要根据跨的数据域再重新定数据/主题域

事实表设计

事实表

围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。

事务性事实表(更多应用于DWD层):对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实对于多事务事实表,在同一个事实表中反映多个业务过程。

累计快照事实表(更多应用于DWD层):累计快照事实表对于类似于研究事件之间时间间隔的需求,采用累计快照事实表可以很好地解决,如在统计买家下单到支付的时长、买家支付到卖家发货的时长等。

周期快照事实表(更多应用于DWS层):在确定的时间间隔内对实体的度量进行抽样,用于研究一段时间内实体的度量值(例如近3O天pv、uv)。
在这里插入图片描述
事实表设计过程:识别业务过程->选择事实表类型->声明颗粒度及维度->补充主题域下度量值->维度退化

拉链表

记录历史数据,记录一个事物从开始一直到当前状态的所有变化的信息
拉链表应用场景:数据量大、表中部分内容会更新、每天保留一份全量数据、维度表的缓慢变化等
拉链表设计:

加行:为明细表添加两个字段一个字段为拉链的开始日期(默认为用户数据出现的日期),另一个字段为拉链的结束日期(默认为9999-99-99),当一个客户a信息变更则添加一条新数据,新数据的拉链日期为更新日期,结束日期为9999-99-99,而原来的结束日期为当天更新日期
在这里插入图片描述

加列:为明细表添加四个字段一个字段为拉链的开始日期(默认为用户数据出现的日期),一个为拉链结束日期,一个为第二个段拉链开始日期(默认9999-99-99),一个为第二个段拉链结束日期(默认9999-99-99),当原数据更新时候,原第一个拉链日期不变,第一个拉链结束日期为数据变更日期,第二个日期开始时间为数据更新时间,第二个结束日期不变
在这里插入图片描述
在这里插入图片描述

数据模型规范

表命名(采用阿里one-data设计)

ODS层(接入层):
全量: ods__业务数据库名}_{业务数据表名}
增量:ods {业务数据库名}{业务数据表名}_delta

DWD层(明细层):
dwd_{(事业部名(适用大厂多事业部情况)上数据域)钛二级数据域)Af业务过程(不清楚或没有写detail)L_df/di(df为全显数据, di为增量数据
全量数据(对源数据全部覆盖)
增星数据(对源数据进行分区式覆盖,例如昨天存储10O0条订单数据,今天存储100条订单数据)

DWS层(汇总层):
dws (事业部名(适盱大厂多事业部情况)上(数据域)二级数据域)〉乂(颗粒度}(例如买家/卖家)(业务过程)X周期粒度)(例如近30天写30d、90天写m)

ADS层(应用层):
ads_{应用类别}(例如风控叫risk)_{应用主题/应用场景) {颗粒度}(例伽如买家/卖家)业务过程)(调度周期)(例如\天调度一次写
ld)

dim表(维度表):
dim_{事业部名(适用于大厂多事业部情况)}_(维度定义}(例如日期写date)

tmp表(临时表):
tmp_{表名}{临时表编号}

view(视图):
[表名}_view

字段命名(采用阿里one-data设计)

是否xxxxx用户,类型字段命名规范 : is_{内容}
枚举值类型字段命名规范 : xxxx_type
时间戳类型字段命名规范 :xxx_date,xxx_time
周期指标命名 :{内容)时间描述}(如最近一次last1,最近两次last2,历史his,最近第二次last2nd)_date、最近180天6m
百分比命名 :{内容}_rate
数值类型(整型)命名 :{内容}cnt{周期(周期看情况加)
数值类型(小数)金额命名 :{内容}amt{周期(周期看情况加)
两个时间段之间统计命名 :xxx(时间段1内行为)_xxx(时间段2内操作)_dur

数据模型标注规范

owner
表中文名+使用说明
每个开发字段中文名(中文名需要包含该字段内容,例如是否为xxxx用户,需要写出包含内容(VN)
每个模型的颗粒度
每个模型的主键(联合主键)

数据模型发展周期

在这里插入图片描述
在这里插入图片描述
作为数据产品/平台该如何思考本次讲的内容
可以从图中这几处想到能做的平台内容,例如数仓建设标准功能,对应的数据域内容,表中每个宁段具体信息等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1793073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大模型】Ollama+open-webui/Anything LLM部署本地大模型构建RAG个人知识库教程(Mac)

目录 一、Ollama是什么? 二、如何在Mac上安装Ollama 1. 准备工作 2. 下载并安装Ollama 3. 运行Ollama 4. 安装和配置大型语言模型 5. 使用Ollama 三、安装open-webui 1. 准备工作 2. Open WebUI ⭐的主要特点 3. Docker安装OpenWebUI,拉去太慢…

操作系统教材第6版——个人笔记3

2.1 处理器 2.1.1 处理器与寄存器 处理器部件的简单示意 用户程序可见寄存器 可以使程序员减少访问主存储器的次数,提高指令执行的效率所有程序可使用,包括应用程序和系统程序数据寄存器:又称通用寄存器地址寄存器:索引、栈指针…

妙手ERP接入TEMU美国本土店,支持高效产品刊登、订单管理、库存管理

​​​​​​​ 众所周知,拼多多向来是低价卷王,而TEMU完美继承了拼多多的基因,靠着全托管模式一路狂奔,两年多便扩展至全球60个国家与地区,市场规模预计达到450亿美元,吸引着越来越多的卖家入驻。 在平台…

32C3-2模组与乐鑫ESP32­-C3­-WROOM­-02模组原理图、升级口说明

模组原理图: 底板原理图: u1 是AT通信口,wiif-tx wifi-rx 是升级口,chip-pu是reset复位口,GPIO9拉低复位进入下载模式 ESP32-WROOM-32 系列硬件连接管脚分配 功能 ESP32 开发板/模组管脚 其它设备管脚 下载固件…

Unity DOTS技术(八)状态组件

文章目录 一,简介二.实例 一,简介 因为在ECS中没有回调,因而无从得知组件是否被销毁.所以我们需要使用ISystemStateComponentData. 什么时ISystemStateComponentData状态组件? 当物体被销毁时ISystemStateComponentData组件不会被销毁.因而我们可以在组件被销毁时在该组件中…

搭建大型分布式服务(三十八)SpringBoot 整合多个kafka数据源-支持protobuf

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

Clo3D导出服装动画,使用Unity3D展示

1.前言 Clo3D是一款应用于时装行业的3D服装设计软件,其强大的布料模拟算法可在3D空间中实现设计、制版、试衣和走秀,大幅提升数字作品逼真度和制作效率。为了让服装动画效果展示在Unity3D上模拟效果&#xff0c;需要Clo3D模拟出逼着的衣服动画。总体流程为Clo3D - Mixamo -Blen…

废酸再生工艺的稳定性强优势

废酸再生工艺&#xff0c;作为现代工业中一项重要的环保技术&#xff0c;其核心目的是将工业生产过程中产生的废酸进行回收、处理和再利用&#xff0c;以实现资源的节约和环境的保护。这一工艺不仅有助于减少废酸对环境的污染&#xff0c;还能为企业带来显著的经济效益。 一、废…

idea实用快捷键(持续更新...)

文章目录 1、快速输入try/catch/finally2、选中多个光标3、实现接口4、方法参数提示5、查看某个类的子类6、弹出显示查找内容的搜索框 1、快速输入try/catch/finally CtrlAltT 2、选中多个光标 ShiftAlt单机多选 End可以全部到行尾&#xff0c;Home则可以全部回到行首 3、实现接…

MySQL的增删改查2

文章目录 1. 数据库约束1.1 约束类型1.2 NOT NULL约束1.3 UNIQUE唯一约束1.4 DEFAULT默认值约束1.5 PRIMARY KEY主键约束1.6 FOREIGN KEY外键约束1.7 CHECK约束 2. 新增3. 查询3.1 聚合查询3.1.1 聚合函数3.1.2 GROUP BY子句3.1.3 HAVING 3.2 联合查询3.2.1 内连接3.2.2 外连接…

慧天卓特:2024年“一带一路”之哈萨克斯坦旱情监测案例分析(FYDI)

引言 联合国防治荒漠化公约组织指出&#xff1a;中亚约有1200万人生活在干旱风险高的地区&#xff0c;面积约为4000万公顷。位于亚洲中部的哈萨克斯坦共和国&#xff08;简称哈萨克斯坦&#xff09;和中国有着长期友好的睦邻和经贸关系&#xff0c;中国是哈萨克斯坦的主要农产…

C++:day3

思维导图 练习题 #include <iostream> using namespace std;class Per { private:string name;int age;int *height;double weight;public:Per(){cout << "Per::无参构造函数" << endl;}Per(string name, int age, int height, double weight) :…

2004NOIP普及组真题 2. 花生采摘

线上OJ&#xff1a; 【04NOIP普及组】花生采摘 核心思想&#xff1a; 1、本题为贪心即可。 2、因为本题严格限制了顺序&#xff0c;所以先把每个节点的花生数量按降序排序。然后逐一判断下一个花生是否需要去采摘即可 3、每一次采摘完&#xff0c;记录耗时 t 以及采集的花…

GPT-4o(OpenAI最新推出的大模型)

简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 方向一&#xff1a;对比分析 GPT-4o&#xff08;OpenAI最新推出的大模型&#xff09;与GPT-4之间的主要区别体现在响应…

SSM框架整合,内嵌Tomcat。基于注解的方式集成

介绍&#xff1a; SSM相信大家都不陌生&#xff0c;在spring boot出现之前&#xff0c;SSM一直是Java在web开发中的老大哥。现在虽说有了spring boot能自动整合第三方框架了&#xff0c;但是现在市面上任然有很多老项目是基于SSM技术的。因此&#xff0c;能熟练掌握SSM进行开发…

Python接入淘宝API接口采集商品详情页到手价优惠券信息数据:智能化营销的加速器

在电子商务领域&#xff0c;智能化营销正在成为提高效率和竞争力的关键。淘宝API提供了一套完整的解决方案&#xff0c;帮助商家实现智能化营销&#xff0c;从而提升销售业绩和顾客满意度。 库存管理&#xff1a; 淘宝API使商家能够实时监控库存水平&#xff0c;自动补货&#…

【康耐视国产案例】智能AI相机:深度解析DataMan 380大视野高速AI读码硬实力

随着读码器技术的不断更新迭代&#xff0c;大视野高速应用成为当前工业读码领域的关键发展方向。客户对大视野高速读码器的需求源于其能显著减少生产成本并提升工作效率。然而&#xff0c;大视野应用场景往往伴随着对多个条码的读取需求&#xff0c;这无疑增加了算法的处理负担…

VCAST创建单元测试工程

1. 设置工作路径 选择工作目录,后面创建的 UT工程 将会生成到这个目录。 2. 新建工程 然后填写 工程名称,选择 编译器,以及设置 基础路径。注意 Base Directory 必须要为代码工程的根目录,否则后面配置环境会失败。 这样工程就创建好了。 把基础路径设置为相对路径。 …

LabVIEW储油罐监控系统

LabVIEW储油罐监控系统 介绍了基于LabVIEW的储油罐监控系统的设计与实施。系统通过集成传感器技术和虚拟仪器技术&#xff0c;实现对储油罐内液位和温度的实时监控&#xff0c;提高了油罐监管的数字化和智能化水平&#xff0c;有效增强了油库安全管理的能力。 项目背景 随着…

算法与数据结构高手养成:朴素的贪心法(下)二分答案

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…