Skip to content

指标管理系统

**本文档引用的文件** - [[README.md]](../../file/bi-analysis/readme.md) - [[go.mod]](../../file/bi-analysis/go.mod) - [[metric.proto]](../../file/bi-proto/metric/v1/metric.proto) - [[query.go]](../../file/bi-analysis/internal/biz/query.go) - [[query.go]](../../file/bi-analysis/internal/data/query.go) - [[query.go]](../../file/bi-analysis/internal/service/query.go) - [[field.go]](../../file/bi-analysis/internal/biz/field.go) - [[field.go]](../../file/bi-analysis/internal/data/field.go) - [[field.go]](../../file/bi-analysis/internal/service/field.go) - [[auth.proto]](../../file/bi-common/api/auth/v1/auth.proto) - [[指标实现情况.md]](../../file/bi-analysis/docs/.md)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论
  10. 附录

简介

指标管理系统是一个基于Kratos框架构建的BI分析服务,专门用于管理和查询各类业务指标。该系统提供了完整的指标生命周期管理,包括指标定义、分类、计算公式、取数路径、权限控制等功能。

系统采用微服务架构,集成了bi-common模块,提供统一的响应格式、OpenAPI文档生成、Nacos配置中心等特性。通过ProtoBuf定义API接口,支持gRPC和HTTP协议,实现了前后端分离的现代化架构。

项目结构

图表来源

章节来源

核心组件

指标模型设计

系统采用分层架构设计,核心数据模型包括:

图表来源

指标分类机制

系统支持多种指标类型,每种类型都有特定的配置和计算方式:

指标类型分组标识描述特殊属性
基础指标basic系统内置的基础业务指标
衍生指标derived基于历史数据计算的指标时间范围配置
订单指标order基于订单表的指标过滤条件配置
公式指标formula自定义计算公式的指标表达式配置
自定义指标diy用户自定义的业务指标表字段映射

章节来源

架构概览

图表来源

详细组件分析

查询引擎组件

查询引擎是系统的核心组件,负责处理各种类型的指标查询请求:

图表来源

查询流程详解

  1. 请求解析阶段:解析查询参数,包括行维度、列维度、查询指标等
  2. 配置加载阶段:根据字段标识加载对应的字段配置和维度配置
  3. 依赖解析阶段:对于公式指标,递归解析其依赖的其他指标
  4. SQL构建阶段:根据指标类型和配置生成相应的SQL语句
  5. 执行查询阶段:执行SQL并获取查询结果
  6. 结果格式化阶段:将查询结果转换为统一的响应格式

章节来源

字段配置组件

字段配置组件负责管理各类指标的配置信息:

图表来源

字段保存流程

字段保存操作根据字段类型有不同的处理逻辑:

  1. 自定义指标保存:生成唯一的字段标识,向关联的自定义表添加对应字段列
  2. 订单指标保存:验证表字段的有效性和过滤条件的合法性
  3. 公式指标保存:解析公式表达式,支持JSON格式的复杂计算
  4. 衍生指标保存:配置时间范围和计算函数,支持历史数据汇总

章节来源

指标API接口

系统通过ProtoBuf定义了完整的指标管理API接口:

图表来源

章节来源

依赖关系分析

技术栈依赖

系统采用现代化的技术栈,各组件之间的依赖关系如下:

图表来源

组件耦合度分析

系统采用了良好的分层设计,降低了组件间的耦合度:

层级组件耦合度说明
表现层service层仅依赖biz层接口
业务层biz层中等依赖data层和外部服务
数据层data层通过接口抽象,易于替换
基础设施bi-common提供通用能力,无业务侵入

章节来源

性能考虑

缓存策略

系统实现了多层次的缓存策略来提升查询性能:

  1. 表存在性缓存:使用Redis缓存表存在性检查结果,采用永不过期策略
  2. 查询结果缓存:对于频繁访问的指标查询结果可以考虑缓存
  3. 配置信息缓存:字段配置和维度配置定期缓存,减少数据库查询

性能优化建议

  1. 索引优化:为常用的查询字段建立合适的数据库索引
  2. SQL优化:避免N+1查询问题,批量加载相关配置
  3. 连接池管理:合理配置数据库连接池大小
  4. 异步处理:对于耗时的指标计算可以采用异步处理

故障排除指南

常见问题及解决方案

1. 指标查询失败

问题现象:查询接口返回错误,提示"暂不支持查询基础指标"

可能原因

  • 请求中包含不支持的基础指标类型
  • 字段配置缺失或不正确

解决步骤

  1. 检查请求中的指标类型,确保使用自定义指标而非基础指标
  2. 验证字段配置是否完整
  3. 查看系统文档确认支持的指标类型

2. 字段保存失败

问题现象:保存自定义指标时报错

可能原因

  • 关联的自定义表不存在
  • 字段标识重复
  • 表字段列添加失败

解决步骤

  1. 确认自定义表已经创建
  2. 检查字段标识的唯一性
  3. 验证表字段列的DDL权限

3. 权限验证失败

问题现象:API调用返回权限不足

可能原因

  • Token无效或过期
  • 用户权限不足
  • 租户ID不匹配

解决步骤

  1. 检查Token的有效期和格式
  2. 验证用户的权限列表
  3. 确认租户ID的正确性

章节来源

结论

指标管理系统通过清晰的分层架构和完善的组件设计,实现了指标的全生命周期管理。系统支持多种指标类型,提供了灵活的查询能力和强大的扩展性。

主要优势包括:

  1. 模块化设计:良好的分层架构便于维护和扩展
  2. 类型安全:通过ProtoBuf定义API,确保接口一致性
  3. 性能优化:多层缓存策略和SQL优化
  4. 权限控制:完善的鉴权机制保障数据安全
  5. 文档完善:详细的实现文档和最佳实践指导

未来可以进一步完善的功能包括:

  1. 增加更多指标类型的实现
  2. 优化查询性能和缓存策略
  3. 增强指标版本管理和变更追踪
  4. 扩展更多数据源的接入能力

附录

指标实现状态概览

根据系统文档,当前指标实现情况如下:

指标分类已实现未实现实现率
财务指标270100%
退款指标(发生时间)120100%
自定义公式700100%
自定义指标200100%
衍生指标200100%
订单指标150100%
其他指标10283%
总计17416651%

章节来源