- 使用 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
引言 深拷贝是指创建一个新对象,该对象的值与原始对象完全相同,但在内存中具有不同的地址。这意味着如果您对原始对象进行更改,则不会影响到复制的对象 常见的C#常见的深拷贝方式有以下4类:
人工智能是一种未来性的技术,目前正在致力于研究自己的一套工具。一系列的进展在过去的几年中发生了:无事故驾驶超过300000英里并在三个州合法行驶迎来了自动驾驶的一个里程碑;IBM Waston击败了
我已经阅读了所有 HERE Maps API 文档,但找不到答案。 HERE实时流量REST API输出中的XML标签是什么意思? 有谁知道如何解释这个输出(我在我的请求中使用了接近参数)? 最佳答
我的 iPad 应用程序工作正常,我将其留在现场进行测试,但现在崩溃了[保存时?] 这是崩溃日志, Incident Identifier: 80FC6810-9604-4EBA-A982-2009A
我的程序需要 qsort 的功能才能运行,但到目前为止还没有完成它的工作。 我实际上是在对单个字符值的数组进行排序,以便将它们分组,这样我就可以遍历数组并确定每个属性的计数。我的问题是 qsort 返
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试使用 AVR 代码对 Arduino Uno 进行编程,因为我不被允许在 9 月份开始的高级项目中使用 Arduino 库。我找到了数据表,让数字引脚正常工作,然后尝试通过 USB 串行连接
我遇到了多次崩溃,似乎 native iOS 方法正在从第三方库调用函数。这是一个例子: Thread: Unknown Name (Crashed) 0 libsystem_kernel.d
我理解如何按照 Dijkstra 算法的解释找到从头到尾的最短路径,但我不明白的是解释。在这里,从图中的图形来看,从 A 到 E 添加到我已知集合的顺序是 A,C,B,D,F,H,G,E 我没有得到的
我正在查看一些 Django 源代码并遇到了 this . encoding = property(lambda self: self.file.encoding) 究竟是做什么的? 最佳答案 其他两
Sentry 提供了很好的图表来显示消息频率,但关于它们实际显示的内容的信息很少。 这些信息是每分钟吗? 5分钟? 15分钟?小时? 最佳答案 此图表按分钟显示。这是负责存储该图数据的模型。 http
我对 JavaScript 和 Uniswap 还很陌生。我正在使用 Uniswap V3 从 DAI/USDC 池中获取价格。我的“主要”功能如下所示: async function main()
我正在尝试弄清楚我下载的 Chrome 扩展程序是如何工作的(这是骗子用来窃取 CS:GO 元素的东西,并不重要...)。我想知道使用什么电子邮件地址(或使用什么其他通信方式)来提交被钓鱼的数据。 这
引言 今天同事问了我一个问题, System.Windows.Forms.Timer 是前台线程还是后台线程,我当时想的是它是跟着UI线程一起结束的,应该是前台线程吧? 我确实没有仔
我需要一些使用 scipy.stats.t.interval() 函数的帮助 http://docs.scipy.org/doc/scipy/reference/generated/scipy.sta
当我在 Oracle 查询计划中看到类似的内容时: HASH JOIN TABLE1 TABLE2 这两个表中的哪一个是 hashed ? Oracle 文档指的是通常被散列的“较小”
我想知道 GridSearchCV 返回的分数与按如下方式计算的 R2 指标之间的差异。在其他情况下,我收到的网格搜索分数非常负(同样适用于 cross_val_score),我将不胜感激解释它是什么
本文分享自华为云社区《 多主创新,让云数据库性能更卓越 》,作者: GaussDB 数据库。 华为《Taurus MM: bringing multi-master to the clou
我真的需要一些帮助来破译这个崩溃报告: Process: Farm Hand [616] Path: /Applications/Farm
我写了一个从 YUV_420_888 到 Bitmap 的转换,考虑到以下逻辑(据我所知): 总结该方法:内核的坐标 x 和 y 与 Y 平面(2d 分配)的非填充部分的 x 和 y 以及输出位图的
我是一名优秀的程序员,十分优秀!