在数据中台建设过程中,指标是数据资产向业务价值转化的核心载体。
qData 数据中台商业版在产品生态圈中构建了统一的指标平台,通过原子指标作为指标体系的最小计算单元,实现指标的标准化定义、统一计算与可治理管理。
本文将系统介绍qData 指标平台中原子指标的计算实现方案,涵盖业务需求、技术选型、架构流程及关键实现细节。
一、业务需求
围绕原子指标计算能力,指标平台需要满足以下核心业务需求:
1、指标规则配置并自动生成 SQL
通过配置化方式定义指标的计算规则,系统自动生成可执行 SQL,避免人工编写带来的口径不一致问题。
2、支持 1000 条数据试计算
在指标正式运行前,支持基于真实数据的小规模试算,用于快速验证指标逻辑与统计口径。
3、支持指标实时计算
满足实时分析、实时监控等业务场景,对指标数据进行实时计算与输出。
4、支持指标离散计算并进行存储
针对周期性统计场景,支持按调度周期进行离线计算,并将结果持久化存储。
5、适配主流数据库环境
指标平台需兼容多种数据库,包括 MySQL、DM8、Doris 等。
二、技术框架选型
1、计算与调度引擎选型
指标平台统一采用Flink作为计算与调度引擎。
- (1)支持流式与批式统一计算模型
- (2)SQL 能力成熟,适合规则化生成
- (3)数据处理性能高,满足实时与离线场景需求
2、数仓架构选型
指标结果统一落地至Doris构建分析型数仓。
- (1)面向分析型场景,查询性能优异
- (2)适合大规模指标数据存储
- (3)与 Flink 集成成熟,写入与查询效率高
三、原子指标计算整体流程
1、指标规则配置
系统首先对原子指标进行基础信息配置,包括:
- (1)度量字段
- (2)计算逻辑
- (3)数据格式
- (4)维度信息
- (5)数据筛选条件
2、规则转化为 Flink SQL
系统根据指标配置规则,自动生成 Flink 可执行 SQL,确保规则定义与执行逻辑一致。
3、试计算判断
- (1)若为试计算模式
- (2)系统自动追加近 1000 条数据的筛选条件
- (3)快速返回计算结果,用于指标校验
4、实时与离线计算判断
- (1)实时计算:直接触发 Flink 实时任务
- (2)非实时计算:由后台调度器按配置周期定时执行
5、统一计算执行
无论实时还是离线计算,指标计算流程统一通过 Flink 执行,避免多套计算逻辑并存。
6、计算结果后处理
Flink 计算完成后,结果统一交由后端进行二次处理:
- (1)维值函数结果整理
- (2)数据结构封装
- (3)结果返回前端或进入存储流程
7、离线结果持久化
针对离线计算场景,计算结果需额外进行持久化存储,供后续分析与复用。
四、原子指标计算具体实现方案
1、SQL 自动拼接机制
(1)关联查询
根据数据模型定义,将事实表与对应的维度表进行自动关联查询。
(2)聚合函数配置
通过原子指标计算逻辑配置,自动生成对应的聚合函数。
(3)统计字段配置
明确原子指标的度量字段,作为最终统计对象。
(4)分组字段配置
分组字段仅支持模型结构中定义的维度类型字段和时间类型字段。
(5)数据筛选条件解析
支持交集、并集等多种筛选方式,通过解析 JSON 规则动态生成 WHERE 条件。
(6)生成 SQL 明细解析
系统支持对最终生成的 SQL 明细进行展示,便于排查与维护。
2、任务调度机制
- (1)配置指标调度周期
- (2)调度器按周期自动触发 Flink 任务执行
3、指标结果数据结构规范
(1)表生成规则
每一个原子指标最终只生成一张结果表。
(2)表名定义规则
数仓层级 + 指标域代码 + 指标代码 示例:ads_water_order(3)表结构定义
字段示例:
id、维度1主键、维度1主键名称、维度2主键、维度2主键名称、指标代码
(4)数据含义说明
- 指标代码字段存储具体统计结果
- 维度主键来源于维度表中的维键数据
- 未配置维度时,最终结果为单值指标
4、离线指标数据存储流程
离线计算采用全量重建策略:
- (1)删除已存在的指标结果表
- (2)按规则重新建表
- (3)执行计算结果插入
五、总结
通过该原子指标计算方案,qData 数据中台商业版指标平台实现了:
指标规则配置化
指标计算引擎化
实时与离线统一执行
指标结果规范化存储
多数据库环境适配
该方案为后续派生指标、复合指标及指标治理能力建设奠定了坚实基础。