TL;DR InfluxDB 技术技巧 - InfluxQL 中的高级条件、Chronograf 中的非 SELECT 查询以及跨度量的查询

导航到

在这周的文章中,我们回顾了上周 InfluxDB 和 TICK-stack 相关的一些有趣的问题、解决方案、教程和问答,这些问题、解决方案、教程和问答来自 GitHub、IRC 和 InfluxData 社区,您可能在上周或之前错过了。

InfluxQL 中的高级条件

问:  我想计算不同时间间隔的最小值,并且只显示最小值大于 0 的结果。InfluxQL 有没有实现这个功能的方法?

我的基本 GROUP BY time() 查询

> SELECT MIN("new-customers") FROM "coffee"  
WHERE time >= '2017-03-29T14:00:00Z' AND time < '2017-03-29T17:00:00Z' 
GROUP BY time(1h),"location"

name: coffee
tags: location=a
time                  min
----                  ---
2017-03-29T14:00:00Z  0    <--- I'd love to suppress that result
2017-03-29T15:00:00Z  1
2017-03-29T16:00:00Z  1

name: coffee
tags: location=b
time                  min
----                  ---
2017-03-29T14:00:00Z  14
2017-03-29T15:00:00Z  15
2017-03-29T16:00:00Z  4

这是一个无效的语法,但这是我想要实现的核心

> SELECT MIN("new-customers") FROM "coffee"
WHERE time >= '2017-03-29T14:00:00Z' AND time < '2017-03-29T17:00:00Z'
AND MIN("new-customers") > 0
GROUP BY time(1h),"location"

ERR: invalid expression: min("new-customers"::float) > 0

答:是的!InfluxQL 的 子查询 提供了这种功能

> SELECT "min" FROM 
(SELECT MIN("new-customers") FROM "coffee"
WHERE time >= '2017-03-29T14:00:00Z' AND time < '2017-03-29T17:00:00Z'
GROUP BY time(1h),"location")
WHERE "min" > 0 GROUP BY "location"

name: coffee
tags: location=a
time                  min
----                  ---
2017-03-29T15:00:00Z  1    <--- No more 0! ????
2017-03-29T16:00:00Z  1

name: coffee
tags: location=b
time                  min
----                  ---
2017-03-29T14:00:00Z  14
2017-03-29T15:00:00Z  15
2017-03-29T16:00:00Z  4

子查询(在主查询的 FROM 子句 中加粗显示的查询)是您的原始查询。主查询在该子查询的结果上添加了额外的条件。请查看 数据探索页面 了解有关子查询及其用例的更多信息。

Chronograf 中的非 SELECT 查询和用户管理

问: 我一直在使用 Web 管理控制台 来运行对我的数据的 SHOW 查询 并管理 InfluxDB 中的 用户。我注意到 Web 管理控制台已被弃用,并预计将在未来的版本中删除。是否有替代方案?如果可能的话,我宁愿不使用 HTTP API命令行界面

A: Chronograf,InfluxData 的用户界面,用于查询、可视化和监控数据,支持 SHOW 查询和用户管理。查看安装指南,了解如何开始使用 Chronograf。

在 Chronograf 中运行 SHOW 查询的示例

Chronograf 中的用户管理

Chronograf 目前处于测试阶段,并不支持网络管理界面中所有功能(暂时不支持)。如果您有任何问题或建议,请随时提交问题。我们非常乐意听取您的反馈!

跨度量查询

Q: 我知道我可以查询具有相同名称的 字段键,这些键存在于 度量 中;如果查询只出现在某些度量中的字段键会发生什么?查询是否会返回错误?

A: 您的查询不会返回错误。如果字段键在该度量中不存在,InfluxDB 不会返回该度量的结果。在下面的示例中,除了 winter 之外,每个度量都有 flower-index 字段键。请注意,即使该度量出现在 FROM 子句中,查询也不会为 winter 返回任何结果。

> SELECT MEAN("flower-index") FROM "summer","fall","winter","spring"

name: fall
time                  mean
----                  ----
1970-01-01T00:00:00Z  4

name: spring
time                  mean
----                  ----
1970-01-01T00:00:00Z  10

name: summer
time                  mean
----                  ----
1970-01-01T00:00:00Z  8

 

接下来是什么

  • 下载页面上有 TICK-stack 的下载。
  • 在云端部署:免费试用InfluxDB Cloud,包含完全管理的集群、Kapacitor 和 Grafana。
  • 在您的服务器上部署:想在您的服务器上运行 InfluxDB 集群?免费试用 14 天的 InfluxDB Enterprise,包括直观的 UI 用于部署、监控和平衡集群,以及管理备份和恢复。
  • 分享你的故事: 300 多家公司分享了他们如何利用 InfluxDB 取得成功的故事。提交你的评价,作为感谢,你将获得一件限量版卫衣。