文章目录
数据仓库基本常识
数据仓库是面向商务智能(BI
)活动,尤其是分析的数据管理系统。它能集中、整合多个来源的大量数据,为企业提供 "单一信息源",方便从数据中获取业务洞察以辅助决策 。其特点如下:
- 面向主题:围绕特定主题(如销售、财务等)组织数据,便于高效分析相关数据。
- 集成:对不同来源、格式的数据进行清洗、转换等操作,建立一致性。
- 相对稳定:数据进入后一般不随意修改,主要用于查询分析。
- 反映历史变化:存储历史数据,可用于分析趋势等 。
离线数仓和实时数仓的区别
对比维度 | 离线数仓 | 实时数仓 |
---|---|---|
数据处理模式 | 按一定时间周期(如每天、每周)进行批量采集、处理、转换和加载,采用批处理模式,数据处理过程相对独立,可在非高峰时段进行 | 采用流处理或微批处理模式,实时或准实时处理数据流 |
数据延迟 | 从数据产生到可用需较长时间(数小时至数天),延迟高 | 能显著降低延迟,实现秒级甚至毫秒级的数据更新 |
数据一致性 | 批处理过程中可全面校验和验证数据,一致性较易保证 | 需在数据流动过程中检查一致性和处理事务,保证一致性更复杂 |
技术架构 | 常采用Hadoop、Hive、Spark等大数据技术栈构建分布式存储和计算平台,依赖传统批处理架构和ETL工具在固定时间窗口处理数据 | 倾向于Kafka、Flink等流处理技术,以及Lambda架构或Kappa架构 ,需支持流数据处理的架构 |
性能要求 | 性能需求相对低,数据处理可安排在非高峰期,如夜间执行批处理任务 | 需具备较高性能和低延迟,以实现实时数据的高效处理和快速响应 |
复杂度和成本 | 实施和维护相对简单,成本较低,但难以满足实时分析需求 | 实施和维护复杂度高,成本更高,但可提供实时数据分析能力 |
适用场景 | 适用于对历史数据深度挖掘、报表生成、趋势分析等对实时性要求不高的场景 | 适用于实时监控(如金融交易监控、网络安全检测)、实时决策支持、事件驱动分析等场景 |
数仓分层
数仓分层是指将数据仓库划分为不同的逻辑层次,每个层次负责处理不同类型和粒度的数据 。通过分层,实现数据的逐步整合和优化,提升数据仓库的可扩展性、灵活性和性能 。以下是常见分层及介绍:
数据引入层(ODS,Operational Data Store )
- 含义:也叫原始数据层、贴源层,将原始数据几乎无处理地存放在数据仓库系统中,结构上与源系统基本保持一致,是数据仓库的数据准备区 。
- 作用 :从业务系统获取数据,同步、存储到数据仓库。保留最完整的数据现场,用于特殊场景下的问题排查 。比如从多个业务方拉回数据,格式化放到
HDFS
。
数据公共层(CDM,Common Dimensions Model )
- 维度层(DIM,Dimension ):以维度作为建模驱动,基于每个维度的业务含义,添加维度属性、关联维度等定义计算逻辑,建立一致的数据分析维表。一般基于雪花模型构建维度表,避免维度属性冗余关联 。
- 明细数据层(DWD,Data Warehouse Detail ) :以业务过程作为建模驱动,构建最细粒度的明细事实表。结合企业数据使用特点,对明细事实表的重要属性字段做适当冗余(宽表化处理 )。还会对
ODS
层数据清洗,处理如字段缺失、格式错误、空值、业务极值、部分数据脱敏、维度退化等问题 。 - 汇总数据层(DWS,Data Warehouse Summary ) :以分析的主题对象作为建模驱动,基于上层应用和产品的指标需求,构建公共粒度的汇总指标表。通过宽表化手段物理化模型,构建命名规范、口径一致的统计指标,为上层提供公共指标 。会对
DWD
层数据进一步汇总,按时间、地域、用户等维度聚合 。
数据应用层(ADS,Application Data Store )
- 含义 :存放数据产品个性化的统计指标数据,根据
CDM
层与ODS
层加工生成 。 - 作用 :面向实际数据需求,以
DWD
或DWS
层数据为基础,组成各种统计报表,供BI
或应用系统查询使用 。统计结果常同步到RDS、ES、MySQL
等系统 。
数仓分层的好处有:
- 清晰数据结构:明确各层作用域,方便开发者和分析师定位、理解数据,降低检索和处理难度 。
- 减少重复开发:下层处理后的数据可被上层复用,避免重复计算 。
- 简化复杂问题:将复杂数据处理任务分解,每层处理单一任务,便于理解和维护 。
- 保障数据质量:各层可对数据校验、清洗,及时发现修正异常值和错误 。
- 数据血缘追踪:便于追踪数据变化历史和依赖关系,快速定位数据问题 。
宽表和维表
在数据仓库中,宽表和维表是两种常见的表类型,它们的结构、用途和特点各有不同。以下是具体介绍:
宽表
- 定义:宽表是一种将多个相关表的数据整合到一个表中的数据结构,通过将维度表和事实表进行关联,把原本需要通过多表连接才能获取的数据合并到一个表中,从而减少查询时的连接操作,提高查询效率。
- 结构特点:宽表通常包含大量的列,这些列可能来自多个不同的表,包括事实数据和相关的维度属性。它会将相关的维度信息冗余存储在表中,以避免在查询时进行复杂的多表连接操作。例如,在一个销售宽表中,可能会同时包含销售订单的基本信息(如订单编号、销售日期、销售金额等)以及与订单相关的客户信息(如客户姓名、客户地址、客户电话等)、产品信息(如产品名称、产品类别、产品价格等)。
- 应用场景:宽表常用于数据仓库的数据分析和报表生成场景。由于它将相关数据集中在一个表中,使得数据分析人员可以方便地进行各种统计分析和数据挖掘操作,而无需频繁地进行表连接。例如,在生成销售报表时,可以直接从销售宽表中获取所需的各种信息,快速计算出不同产品、不同地区、不同时间段的销售指标。
维表
- 定义:维表是用于存储维度信息的表,它是数据仓库中维度建模的重要组成部分。维度是观察和分析数据的角度,例如时间、地点、客户、产品等。维表中包含了与这些维度相关的详细属性信息。
- 结构特点:维表通常具有相对稳定的结构,其数据量一般不会像事实表那样快速增长。维表中的每一行代表一个具体的维度成员,而列则包含了该维度成员的各种属性。例如,在一个客户维表中,每一行代表一个客户,列可能包括客户编号、客户姓名、客户地址、客户生日、客户类型等属性。
- 应用场景:维表主要用于与事实表进行关联,以便在数据分析时提供维度信息。通过将事实表中的外键与维表中的主键进行关联,可以将事实数据按照不同的维度进行分类和分析。例如,在分析销售数据时,可以通过客户维表将销售数据按照客户的不同属性进行分组,如按照客户类型分析不同类型客户的购买行为,或者按照客户所在地区分析不同地区的销售情况。
OneData体系
OneData
体系是阿里巴巴内部进行数据整合及管理的方法体系和工具,其核心目标是构建统一、规范且可共享的全域数据体系。以下是对OneData
体系的详细介绍:
- 核心要素
- 统一数据标准:通过统一的数据模型、指标体系和数据规范,确保不同系统和部门之间的数据语义一致,方便数据整合和共享。
- 数据治理:确保数据的质量、准确性、安全性和合规性,制定数据管理流程和策略,防止数据失控和不一致。
- 数据共享与集成:打破企业内的各类数据孤岛,建立跨部门、跨系统的数据共享机制,支持数据的全面集成。
- 数据服务化 :将数据转化为企业的基础服务,支持通过
API
等方式对外提供数据能力,促进数据的消费和复用。
- 功能
- 数据标准化:制定统一的数据模型和数据标准,包括统一的数据字典、指标体系、以及元数据管理,确保企业内不同系统生成和处理的数据具有一致性。
- 数据治理和质量管理:建立健全的数据质量管理机制,监控和提升数据的准确性、完整性、及时性。通常内嵌数据质量规则和监控工具,帮助发现和解决数据质量问题。
- 数据目录与元数据管理:为企业中的数据资产建立统一的数据目录,使得所有的数据都可以被发现和访问。元数据管理帮助企业了解数据的来源、去向、使用情况等关键信息。
- 数据集成与共享:支持将企业内部不同系统的数据进行集成,并提供灵活的数据共享机制,确保各部门能够在合规的前提下共享和访问所需数据。
- 数据安全与合规性管理:通过对数据访问的严格控制、数据使用的审计,以及数据脱敏、加密等技术手段,确保数据在使用过程中满足合规要求。
- 数据服务化 :鼓励将数据以服务的形式提供,供内部和外部系统调用。通过
API
、数据中台等方式实现数据服务化,提升数据的复用率。
- 架构层次
- 数据源层 :包括企业的各种业务系统、
IoT
设备、外部数据源等,产生海量的结构化、半结构化、非结构化数据。 - 数据采集层 :使用
ETL
(提取、转换、加载)工具或实时数据流处理框架(如Flink、Kafka
)将数据从各类数据源采集并导入数据湖或数据仓库。 - 数据治理层:包括数据标准化、数据质量监控、元数据管理、数据安全与合规等功能,确保数据的可靠性、合规性和可用性。
- 数据存储层:包括数据湖、数据仓库、数据库等存储组件,支持大规模数据的持久化存储。
- 数据服务层 :通过
API、BI
(商业智能)工具等方式,将数据以服务的形式提供给业务应用、数据分析工具或其他消费方。 - 数据消费层:包括各类业务应用、数据分析工具、AI模型训练平台等,消费并利用数据来支持企业的运营和决策。
- 数据源层 :包括企业的各种业务系统、
OneData
体系主要由OneModel、OneID、OneService
三部分构成。OneModel
致力于实现数据的标准与统一,从设计、开发、部署和使用上保障数据口径规范和统一,实现数据资产全链路管理,提供标准数据输出。OneID
致力于实现实体的统一,以商业要素资产化为核心,实现全域链接、标签萃取、立体画像,让数据融通而非以孤岛存在,为精准的用户画像提供基础。OneService
致力于实现数据服务统一,数据被整合和计算好之后,通过统一的接口以服务化方式对外提供数据服务,让数据复用而非复制。
构建数据仓库
构建数据仓库是一个复杂且系统的工程,通常需要遵循一定的步骤和方法,以下为你详细介绍构建数仓的具体流程:
1. 规划与设计阶段
明确业务需求
与业务部门紧密合作,了解他们的业务目标、决策需求以及想要通过数据仓库解决的问题。例如,销售部门可能希望分析不同地区、不同时间段的销售业绩,以制定更有效的营销策略;财务部门可能需要对成本和收入进行精准核算和预测。
确定数据来源
识别并列出所有可能的数据来源,包括内部系统(如业务数据库、日志文件、办公系统等)和外部数据源(如市场调研数据、行业报告等)。明确每个数据源的数据结构、数据质量和更新频率。
进行数据建模
- 概念模型设计:从业务角度出发,对数据进行抽象和归纳,确定数据仓库中包含的主题(如客户、产品、订单等)以及主题之间的关系。
- 逻辑模型设计:将概念模型转化为具体的数据库逻辑结构,定义表结构、字段类型、主键、外键等,同时设计维度表和事实表,确定表之间的关联关系。
- 物理模型设计 :根据逻辑模型和实际的数据库管理系统(如
MySQL、Oracle、Hive
等),确定数据的存储方式、索引策略、分区方案等,以优化数据的存储和查询性能。
2. 数据采集与集成阶段
数据抽取
根据数据来源和目标数据仓库的要求,选择合适的抽取方式,如全量抽取、增量抽取。使用 ETL(Extract - Transform - Load)
工具(如 Informatica、Talend、Sqoop
等)或编写自定义脚本,从各个数据源中抽取数据。
数据转换
对抽取的数据进行清洗、转换和集成,以确保数据的质量和一致性。常见的数据转换操作包括:
- 数据清洗:去除重复数据、处理缺失值、纠正错误数据等。
- 数据标准化:将不同数据源中的数据统一格式,如日期格式、编码格式等。
- 数据关联与聚合:根据业务规则,将相关的数据进行关联和聚合,生成新的数据集。
数据加载
将转换后的数据加载到数据仓库的目标表中。在加载过程中,需要考虑数据的加载性能和数据的一致性,可采用批量加载、并行加载等方式提高加载效率。
3. 数据存储与管理阶段
选择存储技术
根据数据量、数据类型和查询需求,选择合适的存储技术。对于结构化数据,可以选择传统的关系型数据库或分布式文件系统(如 HDFS
);对于非结构化数据,可以考虑使用 NoSQL
数据库(如 MongoDB、HBase
等)或对象存储系统。
数据仓库架构搭建
根据数据建模的结果,搭建数据仓库的架构,包括数据仓库的分层结构(如 ODS
层、DWD
层、DWS
层、ADS
层)和数据仓库的存储布局。
数据质量管理
建立数据质量管理体系,对数据仓库中的数据进行监控和评估,及时发现和解决数据质量问题。可通过设置数据质量规则、定期进行数据审计等方式确保数据的准确性、完整性和一致性。
元数据管理
管理数据仓库的元数据,包括数据定义、数据来源、数据转换规则、数据使用情况等。元数据管理有助于提高数据仓库的可维护性和可理解性,方便用户查找和使用数据。
4. 数据分析与应用阶段
开发数据分析工具和报表
根据业务需求,开发各种数据分析工具和报表,如仪表盘、统计报表、数据挖掘模型等。可使用商业智能(BI
)工具(如 Tableau、PowerBI、QlikView
等)或编写自定义的数据分析脚本进行数据分析和可视化展示。
提供数据服务
通过数据接口(如 RESTful API、JDBC
等)将数据仓库中的数据提供给其他系统或应用使用,支持企业内部的业务系统和外部合作伙伴的数据分析需求。
持续优化与改进
定期对数据仓库进行评估和优化,根据业务需求的变化和数据使用情况,调整数据仓库的架构、数据模型和数据处理流程,提高数据仓库的性能和可用性。同时,不断收集用户反馈,改进数据分析工具和报表,以更好地满足业务需求。