数据开发/数仓工程师上手指南(二)数仓构建分层概念

前言

回顾上篇文章我们可以用思维导图一遍概览:
在这里插入图片描述
在了解了数仓的基本架构之后,我们还需要掌握数仓构建方法,也就是了解数仓是如何建模的,有什么规则和通用方法。我们应该如何去构建一个性能良好、稳定高效、契合业务的数据仓库。

一、数仓建模的好处

首先明确一点,好的数据仓库能够支持复杂数据分析和决策,能够提供高性能查询,能够做到数据的通用集成和保持数据的一致性,可以说得上是面向业务分析的数据库。数据库表设计我们向来有很多方法进行构建,同样数仓建模也有普遍获得认可的方法来达到想要的结果。

数仓功能本质就是通过建模来达成对复杂业务的抽象,清晰准确完整的刻画业务场景,以便用户通过业务视角便捷的获取所需数据,完成对业务活动的度量。我们以两个实际行业应用案例来看:

案例一:零售行业

  • 背景:某大型零售企业希望通过数据分析提高销售业绩。
  • 实施:构建数据仓库,集成销售数据、客户数据和库存数据,采用星型模型设计。
  • 效果:通过OLAP分析,企业能够实时监控销售情况,了解各个产品线的销售趋势和客户行为,优化库存管理,制定精准的市场营销策略。

案例二:银行业

  • 背景:某银行希望提升风险管理能力和客户服务水平。
  • 实施:构建数据仓库,集成交易数据、客户数据和风险评估数据,采用雪花型模型设计。
  • 效果:通过数据仓库的多维分析和数据挖掘,银行能够识别高风险客户和交易,提升风控能力;同时,分析客户行为数据,提供个性化的金融服务,提升客户满意度。

好的数据仓库模型的设计和实施,为企业和组织提供了强大的数据集成、管理和分析能力,支持复杂的数据分析和科学决策,提高业务敏捷性和市场竞争力。通过集成和标准化数据,优化查询性能,存储历史数据,管理数据质量,支持决策支持系统,数据仓库模型成为现代企业数据管理和业务分析的核心工具。

二、数仓分层概念

2.1分层概念

需要明确一点的是,我们的模型最终导向都是主张从分析决策的需求出发构建模型,为分析需求服务。那么我们首先需要理解构建数仓的几个基本分层概念:

在这里插入图片描述

2.1.1业务板块

首先需要明确公司构建数仓具体需要使用在哪些业务上,比如是用于电商系统,或者是投资系统,不同的业务系统需要构建唯一的数仓,不能N:1的构建数仓,以免数据混淆污染。

2.1.2数据域

从业务的角度,对数据进行总体的归类和划分,形成的有边界的数据范围。面向业务分析,将业务过程或者维度进行抽象的集合一个数据域代表一个特定的业务领域或主题领域,如销售、财务、人力资源、库存管理等。每个数据域包含特定的业务事实和与这些事实相关的维度。

比如:

销售数据域

  • 事实表:销售事实表(如销售交易、订单详情)
  • 维度表:产品维度表、客户维度表、时间维度表、销售人员维度表、地区维度表

财务数据域

  • 事实表:财务事实表(如收入、支出、利润)
  • 维度表:账户维度表、时间维度表、部门维度表、费用类别维度表

人力资源数据域

  • 事实表:员工事实表(如员工信息、考勤记录)
  • 维度表:员工维度表、部门维度表、职位维度表、时间维度表

数据域的设计需要全面考虑业务需求、数据来源、数据质量和数据模型,以确保构建一个高效、可靠的数据仓库系统。

2.1.3维度

维度是数据仓库中的一个类别,用于描述业务过程的上下文信息。维度为数据分析提供了不同的视角和分类方式,例如时间、地点、产品、客户等。

特征

  • 描述性:维度通常包含描述性的信息,例如产品名称、客户名称、时间日期等。
  • 分类和分组:维度允许数据按不同的类别和层次进行分类和分组,以支持多维分析。
  • 层次结构:维度通常具有层次结构,例如时间维度可以包括年、季度、月、日等层次。

示例

  • 时间维度:包含年、季度、月、日等信息。
  • 产品维度:包含产品ID、产品名称、类别、品牌等信息。
  • 客户维度:包含客户ID、客户名称、地址、客户类别等信息。

产品维度表:

CREATE TABLE Dim_Product (Product_ID INT PRIMARY KEY,Product_Name VARCHAR(100),Product_Category VARCHAR(50),Product_Brand VARCHAR(50)
);

维度建模是一种数据仓库设计方法,专注于优化数据的存储和查询性能,以支持高效的数据分析和业务决策。维度建模通常采用星型模型、雪花型模型或星座模型。

星型模型雪花模型星座模型
概念所有的维度表都和事实表相连,较为简单的模型,不存在渐变维度,所以数据有一定的冗余雪花模型相当于将星形模式的大维表拆分成小维表,满足了规范化设计。但是难以维护,加大开发难度。很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。
查询速度快,不需要和外表关联进行查询和数据分析,因此效率相对较高。较慢,需要join的表⽐较多所以其性能并不⼀定⽐星型模型⾼。较快,适用于跨主题的复杂分析,可以支持多种业务过程的数据分析。
冗余度高,星型架构是⼀种⾮正规化的结构,多维数据集的每⼀个维度都直接与事实表相连接,不存在渐变维度,所以数据有⼀点的冗余。如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余低,它对星型模型的维表进⼀步层次化,原有的各维表可能被扩展为⼩的事实表,形成⼀些局部的 "层次 " 表,去重冗余。如将地域维表分解为国家,省份,城市等维表。较低,共享的维度表为多个事实表提供描述信息。由于维度表被多个事实表共享,相比于每个事实表各自拥有独立的维度表,数据冗余度较低。
可读性容易容易
表数量较少
模型图对比:

星型模型:
在这里插入图片描述

雪花模型:
在这里插入图片描述

星座模型:
在这里插入图片描述

2.1.4属性(维度属性)

维度所包含的表示维度的列称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。

维度属性的示例

产品维度(Dim_Product)

  • 产品ID(Product_ID):唯一标识每个产品的主键。
  • 产品名称(Product_Name):产品的名称。
  • 产品类别(Product_Category):产品所属的类别。
  • 产品品牌(Product_Brand):产品的品牌。
  • 产品价格(Product_Price):产品的价格。

2.1.5业务过程

业务过程(Business Process)是企业或组织中为完成特定目标而进行的一系列活动或任务的集合。它描述了如何在组织中进行工作,从开始到结束,涉及人员、系统、数据和其他资源的协调与合作。业务过程在数据仓库和维度建模中起着至关重要的作用,因为它们通常是数据仓库中的事实表的基础。

比如:

销售过程

  • 目标:完成产品销售,生成销售订单。
  • 活动:客户下单、订单处理、支付、发货、售后服务。
  • 数据仓库:销售事实表记录每笔销售交易,维度表包括产品维度、客户维度、时间维度等。

销售事实表

CREATE TABLE Fact_Sales (Sale_ID INT PRIMARY KEY,Product_ID INT,Time_ID INT,Sales_Amount DECIMAL(10, 2),Sales_Quantity INT,FOREIGN KEY (Product_ID) REFERENCES Dim_Product(Product_ID),FOREIGN KEY (Time_ID) REFERENCES Dim_Time(Time_ID)
);

2.1.6度量

在维度建模中,度量(Measure)是用于量化业务过程的数值型数据。度量通常存储在事实表中,并与维度表关联,以提供丰富的上下文信息。度量是数据仓库和商业智能(BI)系统中进行数据分析和报告的核心要素。度量通常为数值型数据,作为事实逻辑表的事实。

定义

度量是用于量化业务活动的关键数据点,通常是数值型的,可以进行汇总和分析。度量回答了业务过程中的“多少”或“多少次”的问题,如销售金额、订单数量、库存水平等。

比如销售过程中的度量:

销售金额(Sales Amount):每笔销售的总金额,可以累加。

销售数量(Sales Quantity):每笔销售的产品数量,可以累加。

折扣金额(Discount Amount):每笔销售的折扣金额,可以累加。

库存管理过程中的度量

库存数量(Inventory Quantity):每种产品在每个仓库中的库存数量,半累积。

补货次数(Replenishment Count):每种产品的补货次数,可以累加。

2.1.7指标

指标分为原子指标和派生指标。原子指标是基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,是具有明确业务含义的名词 ,体现明确的业务统计口径和计算逻辑,例如:

  • 原子指标=业务过程+度量
  • 派生指标=时间周期+修饰词+原子指标,派生指标可以理解为对原子指标业务统计范围的圈定。

指标直接与业务活动相关,用于反映业务的关键绩效指标(KPIs),比如:

  1. 销售收入:衡量某一时间段内的总销售额。
  2. 客户获取成本(CAC):获取一个新客户的平均成本。
  3. 净利润率:净利润占总收入的百分比。
  4. 库存周转率:库存在特定时间内被出售和替换的次数。

原子指标对应的为:

  • 单笔交易的金额
  • 单次访问的时长
  • 单个产品的库存数量

2.1.8业务限定

统计的业务范围,筛选出符合业务规则的记录(类似于SQL中where后的条件,不包括时间区间)。

2.1.9统计周期

统计的时间范围,例如最近一天,最近30天等(类似于SQL中where后的时间条件)。

2.1.10统计粒度

统计粒度是统计分析的对象或视角,定义数据需要汇总的程度,可理解为聚合运算时的分组条件(类似于SQL中的group by的对象)。比如:

时间粒度

  • 按秒记录:非常细的时间粒度,适用于需要精确时间戳的数据分析,如服务器日志。
  • 按分钟记录:较细的时间粒度,适用于实时数据分析,如交易系统。
  • 按天记录:常见的时间粒度,适用于日常业务报表,如每日销售报告。
  • 按月记录:较粗的时间粒度,适用于长期趋势分析,如月度财务报告。

细粒度(按天记录)

SELECT Time_ID, SUM(Sales_Amount) AS Total_Sales_Amount, SUM(Sales_Quantity) AS Total_Sales_Quantity
FROM Fact_Sales
GROUP BY Time_ID;
日期产品ID销售数量销售金额
2024-01-011001101000
2024-01-021001151500
2024-01-031001121200

粗粒度(按月记录)

月份产品ID销售数量销售金额
2024-011001373700
2024-021001404000
2024-031001454500

2.1.11具体业务分层拆解

在了解了以上涵盖全面的数仓业务分层概念之后,我们可以来对一个具体的电商业务进行拆解,只需要按照表格填写拆分:

首先业务板块对应就是电商业务,数据域对应为交易域,其中交易域的业务过程和维度可以分解为支付和订单。因为每一笔交易都固定会产生一个订单,其中的动作就是支付。订单的数据属性就是根据订单ID来记录数据。

对于支付这个业务过程,包含支付金额,支付方式和支付时间周期,也可以指定为支付宝支付,那么派生指标就是时间+支付方式+支付金额:

在这里插入图片描述
以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,对此项目感兴趣的,对此领域感兴趣的不要错过,多谢大家的支持!

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

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

相关文章

图形/视图架构的坐标系

图形/视图架构有 3 个有效的坐标系:场景坐标系、视图坐标系、图形项坐标系。 视图坐标系 视图坐标系就是视图组件的物理坐标系,单位是像素。QGraphicsView 视口的左上角坐标总是(0,0)。 场景坐标系 场景坐标系定义了所有图形项的基础坐标,场…

如何排查GD32 MCU复位是由哪个复位源导致的?

上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等,在一个GD32系统中,如果莫名其妙产生了MCU复位,如何排查具体是由哪个复位源导致的呢? GD32 MC…

Idea如何查看Maven依赖树

1、使用idea自带的功能查看依赖树 2、使用Maven Helper插件 https://zhuanlan.zhihu.com/p/699663369

《Milvus Cloud向量数据库指南》——监管机构和社区:开源许可证标准的守护者与推动者

在开源软件的浩瀚宇宙中,监管机构和社区构成了其稳定运行与持续发展的双轮驱动。这些组织不仅定义了开源的本质,还通过制定、维护和执行许可证标准,确保了开源生态的开放性、透明性和协作精神得以传承。其中,开源倡议组织(OSI)、自由软件基金会(FSF)以及Apache软件基金…

【STM32】IIC学习笔记

学习IIC 前言一、基础知识GPIO_WriteBit 写入高低电平 二、放代码三、逐行细读总结 前言 最近沉迷手写笔记~ 尝试解读江科大的IIC程序,结合笔记更理解IIC 一、基础知识 GPIO_WriteBit 写入高低电平 二、放代码 这个是江科大的软件IIC的设置部分 #include "s…

正点原子 通用外设配置模型 GPIO配置步骤 NVIC配置

1. 这个是通用外设驱动模式配置 除了初始化是必须的 其他不是必须的 2. gpio配置步骤 1.使能时钟是相当于开电 2.设置工作模式是配置是输出还是输入 是上拉输入还是下拉输入还是浮空 是高速度还是低速度这些 3 和 4小点就是读写io口的状态了 3. 这个图是正点原子 将GPIO 的时…

Axure设计之轮播图(动态面板+中继器)

轮播图(Carousel)是一种网页或应用界面中常见的组件,用于展示一系列的图片或内容,通常通过自动播放或用户交互(如点击箭头按钮)来切换展示不同的内容。轮播图能够吸引用户的注意力,有效展示重要…

全能数据分析工具:Tableau Desktop 2019 for Mac 中文激活版

Tableau Desktop 2019 一款专业的全能数据分析工具,可以让用户将海量数据导入并记性汇总,并且支持多种数据类型,比如像是编程常用的键值对、哈希MAP、JSON类型数据等,因此用户可以将很多常用数据库文件直接导入Tableau Desktop&am…

Django Web开发:构建强大RBAC权限管理系统的实战指南

文章目录 前言一、rbac 基于角色的权限管理1.acl 基于用户的权限管理2.rbac 基于角色的权限管理 二、应用示例1.配置角色资源a.分析表b.核心逻辑c.使用transfer在前端实现资源配置d.页面效果 2.登录时获取对应权限a.员工登录b.中间件c.前端请求d.效果图 3.前端-路由守卫-页面权…

GAT知识总结

《GRAPH ATTENTION NETWORKS》 解决GNN聚合邻居节点的时候没有考虑到不同的邻居节点重要性不同的问题,GAT借鉴了Transformer的idea,引入masked self-attention机制, 在计算图中的每个节点的表示的时候,会根据邻居节点特征的不同来…

解开基于大模型的Text2SQL的神秘面纱

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

JAVA基础 - 对象

目录 一. 简介 二. 空对象 三. 构造方法 四. 析构方法 五. this关键字 六. 对象销毁 一. 简介 在 Java 中,对象(Object)是面向对象编程的核心概念。 对象是类的实例化,它将数据(属性)和操作这些数据…

【运算放大器】输入失调电压和输入偏置电流(2)实例计算

概述 根据上一篇文章的理论,分别计算没有输入电阻和有输入电阻两种情况下的运放总输出误差。例题来自于TI高精度实验室系列课程。 目录 概述实例计算 1:没有输入电阻实例计算 2:有输入电阻总结 实例计算 1:没有输入电阻 要求&am…

通过IEC104转MQTT网关对接阿里云、华为云、亚马逊AWS、ThingsBoard、Ignition、Zabbix

随着工业互联网的快速发展,传统电力系统中的IEC 104协议设备正逐步向更加开放、灵活的物联网架构转型。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的消息传输协议,因其低带宽消耗、高可靠性和广泛的支持性&#xf…

vue3前端开发-小兔鲜项目-路由拦截器增加token的携带

vue3前端开发-小兔鲜项目-路由拦截器增加token的携带!实际开发中,很多业务接口的请求,都要求必须是登录状态!为此,这个token信息就会频繁的被加入到了请求头部信息中。request请求头内既然需要频繁的携带这个token.我们…

集团ERP信息化项目实施方案(82页PPT)

集团ERP信息化项目实施方案的82页PPT详尽阐述了企业资源规划(ERP)系统实施的全过程,旨在帮助集团整合多个业务流程于一个统一的平台。方案从当前市场环境分析入手,解释了ERP系统对于提升集团运营效率、降低成本和优化资源配置的必…

【OpenCV C++20 学习笔记】图片融合

图片融合 原理实现结果展示完整代码 原理 关于OpenCV的配置和基础用法,请参阅本专栏的其他文章:垚武田的OpenCV合集 这里采用的图片熔合的算法来自Richard Szeliski的书《Computer Vision: Algorithms and Applications》(《计算机视觉&#…

STM32是使用的内部时钟还是外部时钟

STM32是使用的内部时钟还是外部时钟,经常会有人问这个问题。 1、先了解时钟树,见下图: 2、在MDK中,使用的是HSEPLL作为SYSCLK,因此需要对时钟配置寄存器(RCC_CFGR)进行配置,寄存器内…

Eaton伊顿触摸屏维修XV-303-15-C00-A00-1C

伊顿触摸屏维修,工业触摸屏维修,主板维修,坏高故障,损坏显示,不损坏,运行稳定,不花屏,无反应慢等故障维修,维修有保障,资费低.,触摸屏主板坏,高压板故障,按键损坏等均可修理。 伊顿触摸屏维修 EATON触摸屏维修 伊顿工控机维修 EATON工控机维修 伊顿人机界面维修 EATON触摸屏维…

深度解读大语言模型中的Transformer架构

一、Transformer的诞生背景 传统的循环神经网络(RNN)和长短期记忆网络(LSTM)在处理自然语言时存在诸多局限性。RNN 由于其递归的结构,在处理长序列时容易出现梯度消失和梯度爆炸的问题。这导致模型难以捕捉长距离的依…