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在各区间的统计值。
查询示例
- 查询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
- 查询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
- 支持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指定区间的统计值。
查询示例:
- 查询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
- 查询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
- 支持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提供高级分析函数,可以简单、方便、高效地分析出数据的价值,数据库直接返回处理结果,海量的数据处理过程由数据库本身完成,无需业务进行逻辑处理,业务设计更简单,更节省资源。