CBoard框架数据集实现--DataProvider

本文详细分析了CBoard框架中的DataProvider实现,重点关注Config类、Result类、Aggregatable类和DataProvider类的设计与功能。Aggregatable接口利用Lambda表达式实现数据聚合,JdbcDataProvider支持数据源和Lambda两种聚合方式。JvmAggregator是Lambda聚合的核心,提供了灵活的数据处理。总结中指出,Lambda表达式的应用简化了数据处理,并讨论了其在JDBC数据源聚合的优势。
摘要由CSDN通过智能技术生成

文章内容

  1. 相关类分析
  2. Lambda聚合实现
  3. 数据源聚合实现(JDBC)
  4. 总结

前段时间在使用Cboard,一致觉得这个框架的DateProvider的实现是核心的内容(其他的就一般般咯……哈哈),所以,最近花了点时间研究了DataProvider的实现,这里只能简单的分析一下它的实现,可以给大家在开发过程中提供一种思路。

1.相关类分析

和DataProvider相关的类主要分为四类:
Config类:描述维度列和指标列的定义(DTO);
Result类:描述数据结果;
Aggregatable类:聚合实现接口定义和基于Java8特性实现的数据聚合;
DataProvider类:DataProvider抽象类及其具体实现:

1.1.Config类

这里写图片描述

主要关注以下三个类:

DimensionConfig: 维度定义列,包括列名,过滤条件(类型,值),重命名;

ValueConfig: 指标列定义,包括列名和聚合运算类型;

AggConfig: 一个图表对应的数据集描述,包括行,列,指标列,过滤条件;

这些类的实现和数据查询时提交的JSON对象存在对应关系,通过修改JSON的字段值可以自定义查询条件,这些Config类相当于是告诉DataProvider你所需要的数据以及你数据的格式;

1.2.Result类

这里写图片描述

Result类的实现相对简单,只是对结果的描述,为了通用所有数据源,结果的形式为ColumnIndex(列定义)和String[][]二维数据;

我觉得关于数据的维度这一点可以考虑需不需要在增加;

1.3.Aggregatable类

我觉得这个部分的实现是整个框架最精彩的部分,虽然存在一定的限制,但是Lambda表达式很好的运用

这里写图片描述

除了通用接口的定义,我们主要关注以下:

这里写图片描述
Aggregatable接口:不管是直接通过数据源完成聚合还是lambda表达式,都需要实现Aggregatable接口,主要有以下这些方法:

queryAggData: 获取聚合后的数据集;
queryDimVals: 获取某一纬度过滤后的值;
viewAggDataQuery: 查看查询(比如加了聚合列之后的SQL)
separateNull: 对null值得处理,有默认实现;

AggregateCollector类: 实现Collector接口(我们经常使用的是Collectors),定义聚合规则;

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值