数仓概念

本文深入探讨了数据仓库的概念,包括事实表、维度表、粒度和建模过程。介绍了星型模型、雪花模型、Data Vault模型及其原则。此外,还详细阐述了数据仓库的开发流程,包括ETL过程、数据清洗步骤以及数据质量的重要性。数据仓库与数据库的主要区别在于前者面向分析,后者面向事务处理。最后,强调了数据清洗在确保数据仓库质量中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数仓
事实表:
指向各个维度的外键,和一些相应的测量数据,事实表中数据很多,维表记录这一维的属性

维度表
每一个维度表利用维度关键字通过事实表中的外键 约束于事实表中的某一行,实现与事实表的关联, 这就要求事实表中的外键不能为空,这与一般数据库中外键允许为空是不同的。

雪花模型与星型模型不同地方:
雪花模型是对星形模型的扩展,每一个维 度都可以向外连接多个详细类别表。
在这种模式中,维度表除了具有星形模型 中维度表的功能外,还连接对事实表进行
详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。

粒度
是指保存数据的细化或综合程度的级别
根据业务处理流程来确定粒度,粒度影响数据仓库中的数据量大小

粒度可以分为两种形式:
1.按时间段综合数据的粒度
2.按采样率高低划分的样本数据库
建模过程
inmon架构和kimball架构
1.外部数据,业务数据库,文档组成操作型数据库
2.抽取数据到数据过滤区,对数据进行处理清洗,去重重构;
3.经过处理后的数据装载到数据仓库
4.数据仓库会装载到数据集市中(inmon架构的数据仓库是三范式企业级的数据仓库,kimball的数据库是多维企业级的数据仓库) 这一步kimball没有
5.最终提供给最总用户接口(数据挖掘,可视化等)

多维数据模型及建模过程
选择业务流程: 确认哪些业务处理流程是数据仓库应该覆盖的,是维度的基础
声明粒度: 确定事实中表示的是什么
确认维度: 说明了事实表的数据是从哪里采集来的,是实施表的基础
确认事实: 识别数字化的度量,构成事实表的记录

Data Vault模型及建模过程
综合了第三范式(3NF)和星型模型优点的建模方法,设计理念是要满足企业对灵活性、可扩展性、一致性和对需求的适应性要求,是一种专为企业级数据仓库量身定制的建模方式。
1.设计中心表: 企业级数据仓库要涵盖的业务范围,将各个业务主体中抽象出能够唯一标识实体的主键,该主键不变化 例:客户,产品
2

### 大数据数仓概念与实现方法 #### 什么是大数据数仓? 大数据数仓是一种用于存储、管理和分析大规模数据的技术体系。它通过整合多种技术和工具,能够处理海量数据并支持复杂的查询和分析操作。随着企业信息化的发展,数据规模不断增长,传统的数据仓库已无法满足现代企业的数据分析需求[^1]。 #### 大数据数仓的核心架构 大数据数仓通常采用分层设计的方式,主要包括以下几个层次: - **数据采集层** 负责从不同来源收集原始数据,常见的数据源包括关系型数据库(如MySQL)、日志文件、API接口等。为了高效完成这一过程,许多公司开发了自己的数据同步工具,例如小米的LCSBinlog服务[^3]。 - **数据存储层** 存储经过清洗后的数据,分为离线存储和实时存储两种模式。离线存储主要依赖于分布式文件系统(如HDFS),而实时存储则可能涉及内存计算框架(如Apache Flink)。此,近年来兴起的湖仓一体化架构进一步融合了数据湖和数据仓库的优点[^2]。 - **数据加工层** 对原始数据进行转换、聚合等操作,形成适合特定业务场景使用的中间表或汇总表。此阶段可能会运用SQL脚本或者编程语言编写ETL程序。 - **数据应用层** 提供最终用户访问入口,比如BI报表展示平台、机器学习模型训练环境等等。这些应用程序可以直接调用底层已经准备好的高质量数据集来进行更深入的研究工作。 #### 常见的大数据数仓实现方案 以下是几种主流的大数据数仓实现方案及其特点说明: 1. **离线数仓** - 使用MapReduce/Hive等批处理引擎完成复杂的数据运算任务; - 构建流程较为成熟稳定,适用于历史数据分析场景; - 参考典型架构描述可见相关资料。 2. **实时数仓** - 针对高频次变动的小批量增量更新记录做快速响应; - 流行技术栈组合包括但不限于`Flink+Doris`以及`Lakehouse Integration with Hudi`; 这些方案均能较好地解决低延迟要求下的多维统计指标生成难题。 3. **混合架构 (Lambda Architecture)** - 同时维护两套独立但相互补充的工作流——一条负责近似即时反馈效果的高速通道(即速度层),另一条专注于精确度较高的慢速路径(容量层); - 结合上述两者优势从而达到既兼顾时效又不失精度的目的; - 特定情况下可借助单一物理部署达成相同逻辑功能, 如利用 `Flink + Hudi` 的特性模拟整个 lambda 设计思路. ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Example") \ .getOrCreate() df = spark.read.format("parquet").load("/path/to/data") # Example transformation on DataFrame filtered_df = df.filter(df['age'] > 21) filtered_df.write.mode('overwrite').format('orc').save('/output/path') ``` 以上代码片段展示了如何使用PySpark加载Parquet格式的数据,并对其进行过滤后再保存为ORC格式的结果文件。这是构建大数据数仓过程中常见的一种数据处理方式之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值