文档首页/ 云数据库 GeminiDB/ GeminiDB Influx接口/ 最佳实践/ GeminiDB 丰富的数据分析函数,支撑业务高效分析数据价值
更新时间:2025-07-29 GMT+08:00
分享

GeminiDB 丰富的数据分析函数,支撑业务高效分析数据价值

应用场景

在车联网,物联网场景中,数据采集频率高,规模大,如何快速高效的分析出数据价值是业务人员的痛点,传统方案需要把数据查询出来,业务层实现统计分析,这种方式对业务逻辑设计要求高,业务侧资源消耗大,在海量数据场景下往往难以实现。GeminiDB influx是一款高效处理海量数据写入和分析的时序数据库,其提供了多种高级数据分析函数,让数据分析高效,便捷。 本文结合高级分析函数中的直方图函数,来展示GeminiDB在数据处理中的优势。

应用案例

在统计学中,直方图作为一种经典的分析工具,可以直观地描述数据分布特征,应用场景极其广泛,例如:

  • 在网络监控数据方面,通过直方图可以捕捉异常数据的分布区间,便于网络的自诊断与修复;
  • 在IOT数据分析方面,通过直方图可以表示数据的分布特征,便于时序数据的特征提取;

GeminiDB influx支持两种直方图类型查询,一种确定桶数的等高直方图,另一种确定桶边界的定界直方图。等高直方图指每个桶的高度接近的直方图,而定界直方图指设定桶的上下边界值的直方图。定界直方图支持用户的自定义,更方便用户根据业务特点提取数据的关键分布特征。支持四种数据类型,包括整数、浮点数、字符串与布尔类型,可满足各行各业的数据分析需求。

GeminiDB Influx直方图使用

数据样例

示例采用的数据如下:mst是表名,包含4个field(每个field对应一种数据类型)与2个tag,原始数据如下:

> select * from mst
name: mst
time                address   age alive country  height name
----                -------   --- ----- -------  ------ ----
1629129600000000000 shenzhen  12  true  china    70     azhu
1629129601000000000 shanghai  20  false american 80     alan
1629129602000000000 beijin    3   true  germany  90     alang
1629129603000000000 guangzhou 30  false japan    121    ahui
1629129604000000000 chengdu   35  true  canada   138    aqiu
1629129605000000000 wuhan     48        china    149    agang
1629129606000000000           52  true  american 153    agan
1629129607000000000 anhui     28  false germany         alin
1629129608000000000 xian          true  japan    179    ali
1629129609000000000 hangzhou  60  false canada   180    
1629129610000000000 nanjin    102 true           191    ahuang
1629129611000000000 zhengzhou 123 false china    203    ayin

等高直方图

查询语法

SELECT HISTOGRAM([ * | <field_key> | /<regular_expression>/ ], <N>) [WINTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause]  [SLIMIT_clause] [SOFFSET_clause]
HISTOGRAM(field_key, N)计算指定指标field在各区间的统计值,其中N是要求的。
HISTOGRAM(/regular_expression/, N)计算满足正则匹配的field在各区间的统计值。
HISTOGRAM(*, N)计算整数与浮点数数据类型的field在各区间的统计值。

查询示例

  1. 查询field_key为age且桶数为5的等高直方图。
> select histogram(age, 5) from mst where time >= 1629129600000000000 and time <= 1629129611000000000
name: mst
time histogram           value
---- ---------           -----
0    20                  3
0    30                  2
0    48                  2
0    60                  2
0    9223372036854775807 2
  1. 查询field_key满足正则匹配为/hei/(符合要求的只有height)且桶数为5的等高直方图。
> select histogram(/hei/, 5) from mst where time >= 1629129600000000000 and time <= 1629129611000000000
name: mst
time histogram_height         value
---- ----------------         -----
0    90                       3
0    138                      2
0    153                      2
0    180                      2
0    1.7976931348623157e+308  2
  1. 支持field为字符串类型的address与布尔类型的alive的等高直方图查询。
> select histogram(address, 5) from mst where time >= 1629129600000000000 and time <= 1629129611000000000
name: mst
time                histogram value
----                --------- -----
1629129600000000000 chengdu   3
1629129600000000000 hangzhou  2
1629129600000000000 shanghai  2
1629129600000000000 wuhan     2
1629129600000000000 zhengzhou 2
 
> select histogram(alive, 3) from mst where time >= 1629129600000000000 and time <= 1629129611000000000
name: mst
time                histogram  value
----                ---------  -----
1629129600000000000 false      5
1629129600000000000 true       6

定界直方图

查询语法

SELECT HISTOGRAM([ * | <field_key> | /<regular_expression>/ ], ‘specifyBins’,  boundary1, boundary2, ..., boundaryN) [WINTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause]  [SLIMIT_clause] [SOFFSET_clause]
 
HISTOGRAM(field_key, ‘specifyBins’, boundary1, boundary2, ..., boundaryN)计算指定指标field在指定区间的统计值,specifyBins为定界直方图标志,boundaryN表示指定的各边界值,
可以是整数、浮点数、字符串与布尔四种数据类型。
HISTOGRAM(/regular_expression/, ‘specifyBins’,  boundary1, boundary2, ..., boundaryN)计算满足正则匹配的field在指定区间的统计值。
 
HISTOGRAM(*, ‘specifyBins’,  boundary1, boundary2, ..., boundaryN)计算整数与浮点数数据类型的field指定区间的统计值。

查询示例

  1. 查询field_key为age且指定区间[0, 10), [10, 20), [20, 30), [30, 40), [40, 50)的定界直方图。
> select histogram(age, 'specifyBins', 10, 20, 30, 40, 50) from mst
name: mst
time histogram value
---- --------- -----
0    10        1
0    20        2
0    30        2
0    40        1
0    50        1
  1. 查询field_key满足正则匹配为/eight/(符合要求的只有height)且指定区间[0, 160), [160, 170), [170, 180), [180, 190), [190, 200)的定界直方图。
> select histogram(/eight/, 'specifyBins', 160.0, 170.0, 180.0, 190.0, 200.0) from mst
name: mst
time histogram value
---- --------- -----
0    160       7
0    170       0
0    180       2
0    190       0
0    200       1
  1. 支持field为字符串类型的address与布尔类型的alive的定界直方图查询。
> select histogram(address, 'specifyBins', 'anhui', 'beijin', 'chengdu') from mst
name: mst
time histogram value
---- --------- -----
0    anhui     1
0    beijin    1
0    chengdu   1
# 布尔类型
> select histogram(alive, 'specifyBins', false, true) from mst
name: mst
time histogram value
---- --------- -----
0    false     5
0    true      6

除了直方图函数外,GeminiDB还支持多种其他类型的高级分析函数,具体支持函数可参考支持的命令

方案优势

通过GeminiDB提供高级分析函数,可以简单、方便、高效地分析出数据的价值,数据库直接返回处理结果,海量的数据处理过程由数据库本身完成,无需业务进行逻辑处理,业务设计更简单,更节省资源。

相关文档