首页 > 其他分享 >数仓开发理论(一)概念总览

数仓开发理论(一)概念总览

时间:2024-10-11 09:59:28浏览次数:10  
标签:数仓 汇总 数据仓库 概念 维度 投标 总览 数据 ID

数据仓库概念

  • 可以把数据仓库认为是一个国道汇总到高速的一个高速中转站,负责收集这些不同地方来源的数据,统一归纳整理好再放到高速上去用,达到高效数据中转的效果
  • 数据仓库的目的就是为了统筹集中所有可以使用的数据,构建面向分析的集成数据环境,通过最终数据分析结果为企业提供决策导向支持
  • 对于整个数据仓库而言,它不需要生产数据,也不用消费数据,而是通过数仓的一系列处理运算操作,将结果提供给外部

数据仓库整体架构

ODS层(Operational Data Store)

  • 操作型数据存储层
  • 用于存储从业务系统中抽取的原始数据,数据一般未经处理或仅进行了简单的清洗,保持其原始状态

DWD层(Data Warehouse Detail)

  • 明细数据层
  • 将ODS层的原始数据进行清洗、转换,存储详细的、经处理的数据,用于支持详细的业务分析需求

DWS层(Data Warehouse Summary)

  • 汇总数据层
  • 对DWD层的数据进行聚合和汇总,生成更高层次的统计数据和指标,便于快速查询和分析

DIM层(Dimension)

  • 维度数据层
  • 存储用于数据分析的维度数据,这些维度数据描述了事实表中的度量数据的上下文,如时间、地点、产品、客户等

ADS层(Application Data Store)

  • 应用数据层
  • 存储为特定应用或分析需求准备的汇总数据,支持特定的业务应用、报表和分析需求

数仓三层架构

数据采集层

  • 首先我们需要存储对应业务相关的数据,通过外部来源数据进行整合
  • 因为数据来源不同,非一致性质格式数据,需要通过ETL进行数据的转换处理,统一格式放入我们的数据仓库中

数据加工层

  • 数仓核心功能,需要将汇总的数据全部处理成我们可以进行分析的数据,不希望损失原始数据信息
  • 一般我们将数据仓库分为三层,自下而上,逐层提取精炼

数据引入层ODS(Operational Data Store)

  • 一般来说ODS可以说得上是作为一张原始数据表的映射表,存放未经过处理的原始数据至数据仓库系统,结构上与原始数据信息保持一致,是数据仓库的数据准备缓存区
  • 还可以起到保存历史数据记录的作用,也可增加字段,存储的历史数据是只读的

在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有:

  • 全量导入:数据第一次导入时,选择此种方式
  • 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议使用外连接&全覆盖方式

数据公共层CDM(Common Data Model)

  • 又称通用数据模型层,包括DIM维度表、DWD和DWS,由ODS层数据加工而成
  • 主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标
  • 最后为ADS层服务,那么首先要提取出业务以及分析主题两个抽象事物,需要统一口径
说明 案例
公共维度汇总层DIM(Dimension) 主要由维度表(维表)构成,公共维度汇总层(DIM)首先需要定义维度,建立整个企业的一致性维度,降低数据计算口径和算法不统一风险 对于招标业务,可能需要考虑的维度有:招标项目、招标公司、招标类别、地理区域、时间维度(年、季度、月、日)、项目负责人、投标状态
明细粒度事实层DWD(Data Warehouse Detail) 将ODS层中的原始数据进行清洗和转换,可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理,明细粒度事实层的表通常也被称为逻辑事实表 对于招标业务,招标明细可能有:招标项目ID、招标项目名称、招标类别ID、地区ID、项目负责人ID、投标公司ID、投标金额、投标日期、投标状态、投标次数等
公共汇总粒度事实层DWS(Data Warehouse Summary) 将详细的数据进行汇总,公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据,首先确定需要进行汇总的数据以及汇总的维度和指标,接着设计汇总粒度的事实表结构,选择合适的度量值和维度 对于招标业务,可能需要按时间、地区、投标公司、招标类别、项目负责人维度进行汇总,汇总度量值可能有总投标金额、中标金额、投标次数、中标次数等
  • 维度是逻辑概念,是衡量和观察业务的角度,维表是根据维度及其属性将数据平台上构建的物理化的表,采用宽表设计的原则

代码举例

-- 创建DWS汇总事实表
CREATE TABLE DWS_招标汇总 (
    时间ID INT,
    地区ID INT,
    投标公司ID INT,
    招标类别ID INT,
    项目负责人ID INT,
    总投标金额 DECIMAL(18, 2),
    中标金额 DECIMAL(18, 2),
    投标次数 INT,
    中标次数 INT,
    PRIMARY KEY (时间ID, 地区ID, 投标公司ID, 招标类别ID, 项目负责人ID)
);
-- 插入汇总数据到DWS_招标汇总表
INSERT INTO DWS_招标汇总 (时间ID, 地区ID, 投标公司ID, 招标类别ID, 项目负责人ID, 总投标金额, 中标金额, 投标次数, 中标次数)
SELECT 
    时间ID,
    地区ID,
    投标公司ID,
    招标类别ID,
    项目负责人ID,
    SUM(投标金额) AS 总投标金额,
    SUM(CASE WHEN 投标状态 = '中标' THEN 投标金额 ELSE 0 END) AS 中标金额,
    COUNT(*) AS 投标次数,
    SUM(CASE WHEN 投标状态 = '中标' THEN 1 ELSE 0 END) AS 中标次数
FROM 
    FACT_招标
GROUP BY 
    时间ID,
    地区ID,
    投标公司ID,
    招标类别ID,
    项目负责人ID;

数据应用层ADS

  • 存放数据产品个性化的统计指标数据,根据CDM与ODS层加工生成
  • 主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、PostgreSql、Redis等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用

数据仓库 VS 数据库

数据仓库 数据库
设计目的 主要用于在线分析处理(OLAP),支持复杂的查询和数据分析 主要用于在线事务处理(OLTP),支持日常业务操作和事务处理
功能 聚合、清洗和转换大量的历史数据,支持决策支持系统(DSS)和商业智能(BI)应用 处理频繁的数据插入、更新和删除操作,确保数据的实时性和一致性
使用场景 用于支持数据分析和商业报告,如市场分析、销售趋势分析、财务报表分析等 用于支持业务应用程序,如电子商务网站、银行交易系统、企业资源规划(ERP)系统等
数据结构 通常是非规范化的(如星型或雪花型模式),以提高查询性能和分析效率 通常是高度规范化的(第三范式),以减少数据冗余和提高数据一致性
存储方式 存储大量的历史数据,数据量庞大,数据更新频率较低 存储当前的操作数据,数据量相对较小,数据频繁更新
示例 销售事实表、客户维度表、时间维度表等 客户信息表、订单表、库存表等
优化目标 优化查询性能,支持复杂的多维分析和大规模数据处理 优化事务处理性能,确保快速的读写操作
技术 使用分区、聚合索引、物化视图等技术来提高查询速度 使用索引、事务处理、锁机制等技术来保证数据一致性和操作性能
数据处理 处理批量数据,数据从多个源系统抽取、转换后加载(ETL) 处理实时数据,支持并发的读写操作
数据加载 通常通过ETL流程进行批量数据加载,数据加载过程可能在非高峰期进行 主要通过应用程序直接插入或更新数据
用户 主要是数据分析师、数据科学家、商业用户,进行数据分析和报表生成 主要是应用程序和终端用户,进行日常的业务操作
操作类型 复杂的查询和分析操作,注重数据的整合和历史数据分析 CRUD操作(创建、读取、更新、删除),注重事务的原子性和一致性
数据集成 处理多个业务领域的数据,集成度较高,跨多个系统和数据源 通常处理单一业务领域的数据,集成度较低
数据源 来自多个异构数据源,包括内部业务系统、外部数据源、日志数据等 主要来自内部业务系统
数据规模 >=TB GB到TB

数据仓库基本特征

  • 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写,关注数据整合,以及分析、处理性能,会有意引入荣誉,采用反范式方式设计
  • 面向主题:数据仓库以主题为导向来组织数据,而不是以应用程序或事务为导向,主题可以是销售、客户、产品、财务等,它们反映了业务的主要领域,这种主题导向的数据组织方式便于用户进行跨部门和跨业务领域的分析
  • 集成性:集成了来自多个异构数据源的数据
  • 非易失性:一旦数据被加载到数据仓库中,通常不会被更新或删除,数据仓库中的数据是只读的,新的数据会定期加载进数据仓库,而不是对现有数据进行更新
  • 时变性:数据仓库存储随时间变化的历史数据,这意味着数据仓库中的每个数据记录都与一个特定的时间点或时间段相关联
  • 面向分析:数据仓库的设计和优化是为了支持复杂的查询和数据分析,支持多维分析(OLAP)和数据挖掘(Data Mining)
  • 支持决策支持系统:数据仓库是企业决策支持系统(DSS)的核心,旨在为管理层提供可靠的数据基础,支持战略决策、业务规划和运营管理。它能够集成不同业务领域的数据,提供跨部门的分析能力

标签:数仓,汇总,数据仓库,概念,维度,投标,总览,数据,ID
From: https://www.cnblogs.com/shihongpin/p/18456160

相关文章

  • 【C语言复习】常见概念(零基础)
    【C语言复习】常见概念1、C语言是什么?2、C语言的历史和辉煌3、编译器的选择VS20223.1编译和链接3.2编译器的对比3.3VS2022的优缺点4、VS项⽬和源⽂件、头⽂件介绍5、第一个C语言程序6、main函数(主函数)7、printf和库函数8、关键字介绍9、字符和ASCII编码10、字符串......
  • 【C】C语言常见概念~
    C语言常见概念转义字符转义字符,顾名思义,转变原来意思的字符比如#include<stdio.h>intmain(){ printf("abcndef"); return0;}输出的结果为:将代码修改一下:#include<stdio.h>intmain(){ printf("abc\ndef"); return0;}输出的结果变为:\n就是一个......
  • 数据科学初学者都应该知道的 15 个基本统计概念
    一、介绍数据科学的核心是统计学,它已经存在了几个世纪,但在当今的数字时代仍然至关重要。为什么?因为基本的统计概念是数据分析的支柱,使我们能够理解每天生成的大量数据。这就像与数据对话,统计学可以帮助我们提出正确的问题并理解数据试图讲述的故事。        从预......
  • ara::core::Future::then()的概念和使用方法
    1.概念在ara::core::Future的上下文中,then()是一种用于处理异步操作结果的机制。一个Future代表一个尚未完成的异步计算,它最终会产生一个结果或者一个错误。then()方法允许你在Future完成时注册一个回调函数(或者说后续操作),这个回调函数会在Future成功完成(即产生了结果)时被调......
  • 关于C++中的异常概念理解
    1.基本概念异常,即exception,是C++中的基本概念之一,在某段程序发生无法继续正常执行的情况时,C++允许程序进行所谓抛出异常(有时也被称为吐出异常)的行为,这些被抛出的异常,会自动地从触发点开始向外传播,直到被捕获(有时也被称为吞下异常)或者程序终止。2.语法2.1抛出异常下面用一......
  • 【MYSQL学习】10分钟速成!MySQL数据库基本概念全解密,新手也能秒变高手?
    ......
  • std::future概念和使用方法
    1概念std::future是C++标准库中<future>头文件提供的一个模板类,用于异步操作的结果获取。它提供了一种访问异步操作结果的机制,通常与std::async、std::packaged_task或std::promise一起使用。异步操作可以在另一个线程中执行,std::future对象允许当前线程在需要的时候获取异......
  • 二叉树的概念、表示法、性质和操作
    本文记述了二叉树的基本概念、表示法、性质和操作。◆概念二叉树(以下也简称树)是一种存放多个元素的数据结构。每个元素称为结点,每个结点有左、右两个链接,每个链接要么指向其他结点,要么是空链接。某个结点是它的左、右链接指向的结点的父结点,被指向的结点是其父结点的左或右子......
  • 初始操作系统篇(1)—— 操作系统的概念与分类
    找往期文章包括但不限于本期文章中不懂的知识点:个人主页:我要学编程(ಥ_ಥ)-CSDN博客所属专栏: 操作系统目录操作系统的基本概念 操作系统的概念操作系统的特征并发共享虚拟异步操作系统的目标和功能操作系统的发展与分类手工操作阶段批处理阶段单道批处理系......
  • SpringBoot飘香水果网站:从概念到实现
    3系统分析3.1可行性分析通过对本飘香水果购物网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本飘香水果购物网站采用JAVA作为开发语言,SpringBoot框架,是基于WEB平......