简介
使用sql查询到的数据,可以输出为一个 excel 或者 table。因为sql中无法表达 x轴 y轴 等定义信息, 无法直接输出为 echarts 图表。
为了解决数据可视化问题, 我们准备了 data view 工具。将 sql 的结果直接输出为 echarts 可用的格式, 或者其他需要的数据格式。
to_scope_list 函数是折线图与柱图的 data view 实现。
使用说明
to_scope_list('t', '20200101~20200131', 'date', 't', 'c', '1DAY', 0)
- to_scope_list 参数说明 v:0.3.2
参数 | 限制 | 举例 | 说明 |
---|---|---|---|
xField | 必填,唯一 | x | x轴对应的字段 |
xScope | 可选 | date范围:180101~180201 long范围:1~10 str指定范围:北京,上海,广州 str自适应:null 指定策略, 比如按指定字段降序排列: order by sum(value) desc limit 10 (limit N 与 desc 非必填) |
x轴的范围 |
xConver | 可选 | 日期用:date 或 to_date() 数字用:long 或, to_long() 字符串用:string |
不区分大小写, x轴转换类 经常遇到x轴的值为String, 但需要int型递增 此参数可以对此做数据转换 |
aggFields | 必填,不唯一 | plan | 折线的field, 用于控制一行 row 中有几条折线 |
groupKeys | 必填,不唯一 | x, x1, x2 | 折线的key, 用于生成图例 |
interval | 可选 | 86400, 1, 1DAY, 1MONTH | x轴的间隔, |
defaults | 可选 | null 或者 0 | 折线图无值时,数据当什么处理. |
to_scope_list 使用样例
- to_scope_list 视图
import cn.sybn.bean.result.conver.result.ResultToMapConverPool;
String resultView = "to_scope_list('t', '20190101~20190131', 'to_date()', 't', 'c', '1DAY', 0)"
List<Map<String, Object>> data = dao.sqlFindListMap("select t, count(*) as c from table where t between 20180101 and 20180131 group by t order by t")
ResultBase res = new ResultTRows<>(data);
ResultConver resultConver = ResultToMapConverPool.get(resultView);
ResultBase res2 = resultConver.conver(res);
- 返回值
{
"result" : true,
"msg" : "success",
"total" : 1,
"attachment" : {
"_group_by" : [ ],
"_group_fields" : [ "c" ],
"_group_x_field" : "t",
"_group_y_field" : "'c'",
"_group_scope_interval" : "1DAY",
"_group_scope_list" : [ "2019-01-01", "2019-01-02", "2019-01-03", "2019-01-04", "2019-01-05", "2019-01-06", "2019-01-07", "2019-01-08", "2019-01-09", "2019-01-10", "2019-01-11", "2019-01-12", "2019-01-13", "2019-01-14", "2019-01-15", "2019-01-16", "2019-01-17", "2019-01-18", "2019-01-19", "2019-01-20", "2019-01-21", "2019-01-22", "2019-01-23", "2019-01-24", "2019-01-25", "2019-01-26", "2019-01-27", "2019-01-28" ]
},
"rows" : [ {
"_" : null,
"value_scope_start" : "2019-01-01",
"value_scope_end" : "2019-01-28",
"plan" : [ 98832, 89188, 88477, 94331, 98127, 97541, 88971, 91883, 90769, 89554, 101539, 101411, 100595, 91890, 91782, 92129, 91568, 102538, 103876, 103814, 95736, 95367, 95750, 96365, 99826, 102768, 102364, 95084 ],
"ticket" : [ 7454, 2097, 1735, 5957, 7649, 6009, 2353, 2063, 2079, 2012, 3611, 5106, 4042, 2010, 1882, 2137, 2105, 3713, 5120, 4895, 2455, 2133, 2428, 2114, 4300, 4458, 4071, 2494 ],
"sum_plan" : 2692075.0,
"sum_ticket" : 98482.0
} ]
}
- 前端渲染
前端可以使用 charts.js 直接将上面的 json 结果集渲染为折线图.
如果有美化要求,可以让前端人员修改 charts 风格.
- 集成工具
上述内容已经集成进 api-core 接口项目中,
api-core 是业务层通用组件, 本文档主要讲述 dao 层通用组件,因此不专门阐述.
以下是 api-core 效果图, 集成了跨数据库类型查询 ,sql代码提示, 数据可视化三个特性.
近期更新
-
2019-04-28 V:0.3.2
支持 string 型x轴, 并支持自适应和动态适配。