阿里巴巴的 OneData 体系架构方法论,主要分为三个阶段:业务板块 、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。
一. 业务板块(Business Segment)
业务板块是OneData体系架构中的第一步,重点是将企业的各个业务领域进行划分,使得每个业务单元能够独立管理自己的数据,确保数据之间的独立性和一致性。业务重叠性较小的企业可以学习。
-
目标:根据业务领域的不同需求,将企业的数据划分为几个相对独立的模块或板块,每个板块都有清晰的业务目标,且这些目标之间的重叠度较低。这样有助于简化复杂的业务需求和数据处理,减少数据交互中的复杂性。
-
划分依据 :业务板块的划分一般是根据 业务属性 和 数据的业务重要性 来进行的。不同的业务板块会独立处理与之相关的数据,可以是基于产品、客户、财务等维度进行拆分。例如:
- 用户板块:关注用户行为、用户画像、用户生命周期等。
- 商品板块:处理商品分类、库存、定价等相关信息。
- 交易板块:涉及订单、支付、退款等业务。
二. 规范定义(Standard Definition)
规范定义阶段,以 维度建模理论 为基础,通过构建 总线矩阵 ,划分和定义 数据域 、业务过程 、维度 、度量/原子指标 、修饰类型 、修饰词 、时间周期 、派生指标 等。这些要素的定义和设计,确保数据能够被统一规范、标准化地存储和使用。
具体来说,规范定义包含以下几个关键要素:
1、业务过程(Business Process)
业务过程是指企业中的某些关键业务活动或事件,它通常代表了一个数据生成的过程。例如:
- 订单生成过程:表示一个订单从创建到支付完成的业务流程,涉及多个操作(如下单、支付、发货等)。
- 用户行为分析过程:表示从用户登录到购买、浏览行为的全过程。
在维度建模中,业务过程通常对应于事实表,记录了与这些过程相关的所有度量和事件数据。
2.数据域(Data Domain)
数据域指的是数据的一个逻辑划分,它描述了不同业务模块中数据的范围。例如:
- 销售数据域:涉及销售相关的所有数据,如订单、交易、付款等。
- 用户数据域:涉及用户的基本信息、行为数据等。
- 财务数据域:涉及公司财务状况的数据,如收入、支出、利润等。
数据域的划分帮助确保每个业务板块的数据具有独立性,同时在后续的数据处理和建模中具有清晰的边界。
3. 维度(Dimension)
维度是描述业务过程的多个方面的属性,通常用于对事实数据进行分组、筛选和排序。在OneData架构中,维度设计基于业务需求和分析场景,例如:
- 时间维度:用于表示事件发生的时间,通常包括年、季度、月份、周、日等。
- 产品维度:描述产品的各类属性,如品类、品牌、型号等。
- 客户维度:描述客户的属性,如年龄、性别、地域、消费习惯等。
维度表提供了对事实数据的多角度分析支持。
4. 度量/原子指标(Metrics/Atomic Measures)
度量 或原子指标是用来衡量某个业务过程的具体数据点,它通常是数值型数据,如销售额、交易量、利润等。原子指标是最基本的、不可进一步拆解的数据度量。它们通常出现在事实表中。
例如:
- 销售额:记录一笔交易的销售金额。
- 交易量:记录某段时间内发生的订单数量。
这些度量值是数据仓库分析的基础。
5. 修饰类型和修饰词(Modifiers)
修饰类型 和修饰词指的是数据的描述和附加信息,用于对度量进行细化或限定。修饰类型通常用于进一步描述某个度量值的维度或范围,修饰词则用于细化这些描述。例如:
- 修饰类型:客户类型(新客户、老客户)、时间类型(周、月、年)等。
- 修饰词:例如"按地区分布"、"按时间范围"等,用于对度量进行更精确的筛选。
通过修饰,可以使分析更加细粒度,帮助用户对复杂数据进行深入的探讨和比较。
6. 时间周期(Time Period)
时间周期定义了业务分析中的时间范围,时间是维度建模中非常重要的一部分。时间周期用于定义数据的时间切片,例如:
- 日周期:按天统计。
- 月周期:按月进行数据汇总。
- 年周期:按年进行数据统计。
时间周期的定义确保了数据可以在不同的时间维度上进行分析。
7. 派生指标(Derived Metrics)
派生指标 = 一个原子指标 + 多个修饰词(可选) + 时间周期
其中:
- 原子指标:是最基本的度量单位,通常是对某个业务过程的数值衡量,如"支付金额"、"订单数量"。
- 修饰词:用于限定或细化数据的范围,通常与维度相关,例如"海外买家"、"新客户"、"按地区分布"等。
- 时间周期:限定数据的统计时间范围,如"最近1天"、"上个月"、"今年"等。
举例说明:
-
原子指标:支付金额。表示交易过程中用户支付的金额。
-
修饰词:海外买家。这个修饰词限定了分析的业务对象,指的是来自海外的用户。
-
时间周期:最近1天。这个时间周期限定了数据的时间范围,指的是过去24小时内的数据。
派生指标的实例:
-
最近1天海外买家支付金额
- 这里,"支付金额"是原子指标,"海外买家"是修饰词,用于限定买家的地区,"最近1天"是时间周期,用于限定数据的统计范围。
-
上个月的产品A销售额
- "销售额"是原子指标,"产品A"是修饰词,限定了分析的是某个特定产品的销售数据,"上个月"是时间周期,限定了统计的时间范围。
-
去年全球用户订单数量
- "订单数量"是原子指标,"全球用户"是修饰词,限定了分析对象是全球的所有用户,"去年"是时间周期,限定了数据统计的时间。
三、派生指标分类
派生指标可以分为以下三类:事务型指标 、存量型指标 和 复合型指标。
1. 事务型指标
定义:
事务型指标用于衡量业务活动的数量或金额。这类指标通常反映动态的业务行为,例如用户的操作、系统的交互。
特点:
- 数据是随着时间发生变化的。
- 需要维护原子指标 及修饰词,在此基础上构建派生指标。
- 时间周期通常为明确的时间范围,如"今天"、"最近1周"。
例子:
- 新发商品数:当天新增的商品数量。
- 订单支付金额:某时间段内支付成功的订单金额。
- 新增注册会员数:当天新注册的用户数量。
2. 存量型指标
定义:
存量型指标用于衡量实体对象(如商品、会员、账户等)某些状态的累计结果。这类指标反映的是一个时刻的统计值。
特点:
- 数据通常是历史累计到某个时间点。
- 需要维护原子指标 及修饰词。
- 时间周期一般是"历史至当前时间"。
例子:
- 商品总数:当前系统中所有商品的总数量。
- 注册会员总数:截止到某时间点注册的会员总数。
派生指标实例:
- 截至2024年1月1日的注册会员总数
- 当前有效商品总数
3. 复合型指标
定义:
复合型指标是基于事务型指标和存量型指标通过一定的计算复合而成。这类指标通常用于衡量转化率或综合性能。
特点:
- 数据是由事务型和存量型指标组合而成。
- 有些需要创建新的原子指标 ,有些可以直接在事务型或存量型指标的基础上加修饰词。
- 通常表现为比例、效率或转化类的指标。
例子:
- 下单转化率:浏览UV到下单买家的转化率。
- 库存周转率:存货的周转次数(公式:销售额 ÷ 平均库存金额)。
- 订单支付成功率:支付成功的订单数占总订单数的比例。
派生指标实例:
- 最近1个月某商品类目的下单转化率
- 截止当前,商品库存周转率为3次/月
四、模型设计
基于阿里巴巴的数据分层架构,模型设计可以按照以下三个主要层次进行规划:操作数据层(ODS)、公共维度模型层(CDM,包括 DWD 和 DWS)、应用数据层(ADS)。以下是各层的详细说明及其在模型设计中的作用:
1. 操作数据层 (ODS)
定义:
ODS 是数据仓库的基础层,用于存储从业务系统直接同步的原始数据,目标是保证数据的完整性和原始性,为后续加工提供基础。
模型设计内容:
-
数据同步:
- 结构化数据: 支持增量或全量数据同步,通常通过工具(如 MaxCompute、Flink 等)将业务数据导入。
- 非结构化数据: 例如日志数据,通过结构化处理后存储到仓库中。
-
历史数据累积:
- 保存全量或增量历史数据,满足数据稽核和审计需求。
-
初步清洗:
- 对原始数据进行基础清洗(如去重、字段格式化),确保数据的质量。
举例:
- 将电商系统中的订单、用户注册信息和商品信息以原始表的形式同步到仓库,如
ods_order
、ods_user
、ods_product
。
2. 公共维度模型层 (CDM)
CDM 是数据仓库的核心层,基于维度建模理论细分为明细数据层(DWD)和汇总数据层(DWS)。这一层的重点是通过加工原始数据,生成高效的分析模型,建立一致性维度和公共指标。
2.1 明细数据层 (DWD)
-
定义:
- 存放业务的明细事实数据和维度数据,保持数据的原始粒度。
-
模型设计内容:
- 维度退化: 将一些维度信息直接存入事实表,减少事实表与维表的关联,提高查询性能。
- 明细宽表: 通过多表关联,将相关数据整合为一张宽表,便于直接使用。
- 一致性维度: 定义一致的维度表(如时间维度、用户维度),为多场景共享提供支持。
-
举例:
- 构建商品交易事实表(
dwd_order_detail
),包含订单编号、商品 ID、下单时间、金额等原始粒度信息。 - 定义时间维度表(
dim_time
),记录日期、周、季度等属性。
- 构建商品交易事实表(
2.2 汇总数据层 (DWS)
-
定义:
- 存放汇总后的公共指标数据,通过聚合计算生成统计结果,支持更高层次的应用需求。
-
模型设计内容:
- 公共指标加工: 基于 OneData 体系,定义统一口径的统计指标(如 GMV、付费转化率)。
- 宽表设计: 构建宽表存储多维度指标,减少重复计算。
- 优化查询性能: 加强指标的维度退化,降低查询复杂度。
-
举例:
- 汇总用户行为数据生成用户活跃指标表(
dws_user_behavior_summary
),包含日活跃用户数、付费用户数等。 - 订单分析宽表(
dws_order_summary
),按时间、地区、商品分类汇总销售金额和订单量。
- 汇总用户行为数据生成用户活跃指标表(
3. 应用数据层 (ADS)
定义:
ADS 是面向具体业务场景和数据产品的应用层,存放经过高度个性化处理的统计指标数据。
模型设计内容:
-
场景化数据:
- 针对具体需求设计满足特定场景的表,如为报表系统、推荐系统提供个性化指标。
-
轻量化加工:
- 在 CDM 层数据基础上,做进一步的细化和过滤,生成最终的输出数据。
-
实时数据支持:
- 针对实时场景,设计数据流处理模型,满足秒级响应需求。
举例:
- 针对电商运营团队构建活动效果分析表(
ads_campaign_analysis
),包含活动期间的订单量、销售额、优惠券使用率等。 - 为客户生成会员积分管理表(
ads_member_points
),统计会员的积分变化和等级情况。