sybn sybn-util 项目说明文档 - 基于java的跨数据库联合查询

fill 数据补全

2021-12-23
sybn

在 echart 等业务场景下, 查询N天的数据时, 希望返回一天一行, 一共N行数据.

但是从数据库 group by 出来的数据可能不够7行, 需要将没有数据的日期填充进来.

说明

处理前的数据
select date, sum(v) as v from [{date:'2021-12-03',v:3},{date:'2021-12-06',v:6}] group by date
date v
2021-12-03 3
2021-12-06 3
处理方法

直接使用 fill 语句补全数据.

-- 查询数据库
select date, sum(v) as v from [{date:'2021-12-03',v:3},{date:'2021-12-06',v:6}] group by date;
-- 补全
fill(t('',yyyy-MM-dd,2021-12-01~2021-12-07,DAY), 'a, v, x', 0);
处理结果
date v
2021-12-01  
2021-12-02  
2021-12-03 3
2021-12-04  
2021-12-05  
2021-12-06 6
2021-12-07  

fill 函数介绍

fill(dimensionConf, measure, measureDefaultsValue);

  • dimension

dimensionConf 维度列表,待补充的维度名的及其配置的集合(fill和valueKey的总合应该恰好等于list中的map的size)

measure (可选)待补充的度量列表,如果有多个值逗号隔开,不填则填充所有非维度字段

measureDefaultsValue (可选)度量value被补充的默认值。(常用值: null, 0, ‘’, rand())

  • 数据对齐参数 dimensionConf

可以用逗号分开声明多个 dimension 的值域,每个 dimension 的值域由一个函数来描述,函数格式如下:

格式:dimension(paramKey, fillType, fillScope, keyInterval)

例如:id(id,int),field,t(t,yyyy-MM-dd, 2021-12-01~2021-12-31, WEEK)

dimension = sourceData中数据的一个dimension

paramKey = (可选) 如果fillScope为空, 则从 fillMap中获取param对应的值作为fillScope

fillType = (可选) sourceData中此key的补全方式 正在操作的字段类型(str=默认值,使用String格式 / null=以valueScope为准 / values=以已有数据为准忽略valueScope / int=以int格式valueScope为准 / yyyy-MM-dd=以date格式valueScope为准 / scope=以int / date格式valueScope为准)

fillScope = (可选) sourceData中此key的补全范围(常用格式: ‘1~10’, ‘2021-12-01~2021-12-31’, ‘甲,乙,丙,丁’)

keyInterval = (可选) 数据步长,一般是: 1, 1DAY, 1MONTH, 1YEAR 等值

相关页面


Similar Posts

Comments

暂不开放评论! 可微信联系