- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文分享自华为云社区《华为云GaussDB(for Influx)揭秘第九期:最佳实践之数据直方图》,作者:GaussDB 数据库。
随着5G和IOT的快速发展,面对爆发式增长的时序数据,如何才能挖掘数据中的潜在价值,为客户的业务运行、商业决策提供精确的指导?在统计学中,直方图作为一种经典的分析工具,可以直观地描述数据分布特征,应用场景极其广泛,例如:
本文带您了解直方图在不同产品中的实现,以及GaussDB(for Influx)中直方图的使用方法。
时序及分析性数据库大部分都支持了直方图算子,但各个数据库中的直方图实现上也有一定差异,其中几种比较典型的直方图实现有:
Druid:Druid-histogram拓展中提供了近似直方图(approximate histogram aggregator)和固定桶直方图(fixed buckets histogram)聚合器。其中近似直方图根据论文《A Streaming Parallel Decision Tree Algorithm》实现,较适用于随机分布的数据。
ClickHouse:ClickHouse提供了自适应直方图,查询的结果为近似值。与Druid类似,其实现参考了论文《A Streaming Parallel Decision Tree Algorithm》。当新数据输入到直方图时,直方图中桶的边界会被调整,通常情况下,桶的宽度并不相等。
ElasticSearch:ElasticSearch中支持了HDR Histogram(High Dynamic Range Histogram),HDR Histogram是一种替代实现,在计算网络延迟的百分位数表现良好。同时,当值的范围并不清楚时,官方并不建议使用HDR Histogram,因为此时内存占用会很高。
InfluxDB v2.0:InfluxDB同样提供了直方图的实现,与其它直方图略有不同。InfluxDB2.0可以设置直方图的桶的生成方式,linearBins()可以将数据按照线性分割,即桶宽相等,logarithmicBins()则可以将数据按照指数分割,即桶宽呈指数形式增长。
GaussDB(for Influx):GaussDB(for Influx)支持两种直方图类型查询,一种确定桶数的等高直方图,另一种确定桶边界的定界直方图。等高直方图指每个桶的高度接近的直方图,而定界直方图指设定桶的上下边界值的直方图。定界直方图支持用户的自定义,更方便用户根据业务特点提取数据的关键分布特征。支持四种数据类型,包括整数、浮点数、字符串与布尔类型,可满足各行各业的数据分析需求。
本章节通过实际的数据样例介绍GaussDB(for Influx)直方图的使用。
示例采用的数据如下:mst是表名,包含4个field(每个field对应一种数据类型)与2个tag,元数据如下:
> show field keys
name: mst
fieldKey fieldType
-------- ---------
address string
age integer
alive boolean
height float
> show tag keys
name: mst
tagKey
------
country
name
原始数据如下:
> 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 ca** 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 ca** 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在各区间的统计值。
查询示例
> 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
# 浮点数类型
> 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
> 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指定区间的统计值。
查询示例:
# 整数类型
> 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
# 浮点数类型
> 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
# 字符串类型
> 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
下图分别表示上述查询的各定界直方图。
直方图作为一种经典的统计分析工具,由于其构建简单高效且能有效地描述数据分布特征,因此它的应用场景极其广泛,特别是在分析型数据库中。GaussDB(for Influx)中不仅支持了两种类型的直方图查询能力(等高与定界直方图),而且支持了四种数据类型(整数、浮点数、字符串与布尔型),能够帮助用户快速构建业务的数据分析能力,助力用户商业成功。
另外,GaussDB(for Influx)还在集群化、冷热分级存储、查询、高可用方面也做了深度优化,能更好地满足时序应用的各种场景。
本文作者:华为云数据库创新Lab & 华为云时空数据库团队 欢迎加入我们!
云数据库创新Lab(成都、北京)简历投递邮箱:xiangyu9@huawei.com
华为云时空数据库团队(西安、深圳)简历投递邮箱:yujiandong@huawei.com
是否有人在华为手机(例如 Honor 8、Honor 7)上遇到位置监听器问题。 我有一个后台服务,可以实现位置监听器,但对于华为手机,它会在大约 5-6 次位置更新后停止工作。 我已将我的应用添加为
我正在使用“ReadSmsManager.StartConsentAsync”,它工作正常。但我有一个问题:官方文档说:“开启读取短信服务,直到获取到符合规则的短信或服务超时(超时时间为5分钟)”。我
阿里、华为、腾讯java技术面试题精选,具体内容如下 jvm的类加载机制是什么?有哪些实现方式? 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数
我已按照文档 here和 here (这很简单),但 map View 不加载任何图 block 。 我使用HMS Toolkit,配置向导成功。我还设置了我的 api key ,在我的应用程序类和我
这个问题可能看起来很宽泛,但我会尽力总结一下。 因此,我正在 Play 商店 Multi Timer Free 上复制示例应用程序 应用程序用于设置多个计时器。 我几乎已经完成了该应用程序。但我面临着
好的,logcat 正在显示系统日志,但在我的华为 Ascend 上没有显示应用程序日志。如果我切换到另一台设备,例如我的 Galaxy Nexus 或 Nexus 7,则会显示相同应用(甚至相同 A
根据网友投稿,华为 Watch GT2 1.0.3.16版本更新,新增支持睡眠呼吸暂停研究,优化了GPS 定位速度。 更新日志: 1)新增支持睡眠呼吸暂停研究(配套运动健康 APP 10.0
根据网友投稿,华为 Watch GT2更新了1.0.2.38固件,优化了GPS轨迹及蓝牙耳机兼容性。 【注意事项】 1)运动健康 APP 传输升级包100%后,请继续等待安装进度条完成,确保
这几天我每次发布 APK 都会收到发布前的报告,说它在华为 Mate 9 上失败。报告没有说太多,日志中没有任何崩溃。我能看到的唯一奇怪的是它声称我的应用程序在屏幕截图上有病毒。我附上它显示的内容。由
我正在开发翻译应用程序,我需要说出用户翻译的内容。关注华为Text to Speech医生我得到了错误。 onError: MLTtsError{errorId=11301, errorMsg='Th
我在网上找到的所有现有解决方案都建议执行以下操作: https://www.xda-developers.com/huawei-phones-disable-logcat-heres-how-to-r
我们知道华为和小米在设置选项中有“protected apps option”,这个选项会在屏幕关闭时杀死我们的应用程序,然后无法收到通知和其他...我想警告我的用户关于此选项并打开此设置部分,是否可
据 MSPoweruser援引seekdevice报道,中国国家知识产权局最近批准了华为申请的 AR 智能眼镜专利。此次获得专利的华为 AR 智能眼镜设计包括机身,摄像头组件,伸缩组件,旋转组件和控
我实现了华为 map ,遵循@shirley here解释的所有协议(protocol). map 第一次运行良好。但是在第二次加载时,它会创建一个奇怪的数组越界异常,并在 setContent Vi
我在我的应用程序中有使用 GoogleMaps 的 map ,但现在我需要将我的应用程序上传到 AppGallery,并且我正在尝试使用华为 map 来完成我的功能。 但是华为 map 与谷歌地图不一
当我在我的 Flutter 应用中使用华为 map 时,我把它放在了堆栈小部件中,并放置了许多 float 按钮来访问 map 。 在 map 渲染之前,按钮会显示,但在 map 渲染之后,按钮不会出
我正在尝试了解如何在 linux 中使用 HUAWEI E173 dongle 使用语音功能。 我的加密狗启用了语音功能(语音适用于 Windows 应用程序)。 我可以使用 AT^CVOICE 检查
我有一个安卓应用程序,我正在使用华为 AR 引擎套件。 我有一个扩展名为 .obj 的模型文件。当我在名为 blender 的应用程序中减小其大小后将此文件添加到我的应用程序时,我的模型无法正确显示。
我的应用无法在华为 P8 Lite 上启动,但在其他设备上运行良好。 我搜索了这个问题很长时间,但找不到有效的解决方案。 我的应用程序一直运行没有问题。然后我修复了一些问题,并在华为 P8 Lite
我正在尝试模拟华为 Y530。根据this site , 它具有以下规范: 屏幕:480 x 854 像素,4.5 英寸(~218 ppi 像素密度) 这是我的 WEB APP 在实际设备上的样子:
我是一名优秀的程序员,十分优秀!