数据治理:数据指标管理平台

71 阅读3分钟

笔者最近入职了一家外包公司,从事的是某金融机构指标平台的后端代码开发。 因为是第一次接受相关业务,所以在空余时间面向ai搜索了解了一些相关知识,并结合相关代码做了一些整理。

指标

  1. 原子指标‌:基础业务指标,如用户数、交易金额等,不可拆分且直接反映业务核心数据。
  2. 派生指标‌:基于原子指标、时间周期和维度组合生成,例如“最近30天杭州地区用户下单数”。
  3. 复合指标‌:通过数学运算(如比率计算)生成的指标,例如“用户留存率”

以上是ai提供的一些指标分类信息,在笔者所了解的代码中,当前系统内部指标也是如上分成了三种类型,

原子指标

原子指标是对数据源的进一步分组聚合计算,所以在底层实现上就是一段具体的sql。
如下假设是一个计算某部门某段时间的部门总薪资指标,其底层最终存储的用来计算的就是一段分组聚合后的sql
eg:select depart "部门",sum(salary) "部门薪资汇总" from depart_salary t where t.biz_date 
between ${startDate} and ${endDate} group by depart order by depart

image.png 大概的原子指标配置页面也就是如图所示

派生指标

派生指标是针对原子指标计算结果的进一步筛选
原子指标在配置好后,还会配置相关调度信息,
每次调度计算都会将结果写入指标结果宽表。
派生指标则是在这个指标结果宽表的基础上,
再进行sql的组装拼接计算获取到对应的指标结果值

复合指标

复合指标类似于派生指标,也是使用指标结果宽表来获取对应的指标结果值,
所不同的是复合指标,需要支持指标跟指标之间的四则运算,if else等逻辑运算。

数据源

  1. sql数据源‌:数据开发自己编写sql查询的业务宽表。
  2. 数据集合‌:上游BI系统通过拖拉拽在页面配置好的数据集合。
  3. 文件‌:诸如导入的csv,excel等文件。
  4. API接口:上游系统提供的可以获取数据的api接口。

sql数据源

一段sql构建的数据源。数据开发同事会将底层多张表进行关联,
查询出大量会被使用的字段。以供后续指标配置时候使用。
指标配置的时候,选择对应的维度,度量,
后台将其组装成一个分组聚合的sql。并最终由指标平台直连数据库进行sql查询。

数据集合

现阶段的数据集合,也是返回一段具体的sql到指标平台,
再由指标平台,在外层再包一层分组聚合的sql。
最终连接对应的数据查询引擎,执行sql并获取结果

文件

当前支持的是业务报表的excel,用户将excel上传到文件存储服务。
然后在配置指标时,进行解析,针对所选的维度,度量进行分组聚合计算。
针对数据量不大的直接在内存使用java stream进行计算。数据量的写入数据库临时表,在进行sql的拼接查询

API接口

提供给指标平台使用的api接口,需要满足对应的格式规范。
由指标平台调用接口获取数据,最终再使用类似excel数据源的方式进行处理

总结

在初步走读代码后,笔者发现系统想做的东西很多,但好多看起来都没有进行很好的规划,大多是功能的堆砌,代码读起来也是让人生畏