TL;DR InfluxDB 技术提示 - 最有趣的 InfluxDB 和 TICK Stack 相关问题、解决方法和操作指南

导航至

在本周的文章中,我们回顾了来自 GitHub、IRC 和 InfluxData 社区 中您可能在过去一周左右错过的最有趣的 InfluxDB 和 TICK-stack 相关问题、解决方法、操作指南和问答。

微秒语法的细微之处

问:  当我使用 u 在查询中指定微秒时,我得到了预期的结果。当我在 配置文件 中使用相同的 u 指定微秒时,我得到了一个 parse config 错误。这是我应该预期的吗?有没有办法在配置文件中指定微秒?

查询中的 u 

> SELECT * FROM "u_and_me" WHERE time = 200u

name: u_and_me
time value
---- -----
1970-01-01T00:00:00.0002Z 1

配置文件中的 u 

run: parse config: time: unknown unit u in duration 200u.

我将 log-queries-after 设置为 200u,并且在重启 InfluxDB 时看到了该错误。

答: 这是一个 InfluxDB 中的 已知问题。写入、查询、CLI 的 precision 命令和配置文件的正确微秒语法有所不同。下表概述了这些类别中每种可接受的微秒语法

微秒语法 API 写入 API 查询/CLI 查询 CLI precision 配置文件
u
us
µ
µs

在您的情况下,将 log-queries-after 在您的配置文件中设置为 200us,您就可以正常使用了!

子查询的语法

问: 我正在尝试在一个主查询中包含多个 子查询,但我一直收到解析错误。这是受支持的行为吗? 粗体行是子查询

> SELECT MEAN("max"),MEAN("min") FROM ( 
  SELECT MAX("subways") FROM "public_transit" GROUP BY "id_number"; 
  SELECT MIN("subways") FROM "public_transit" GROUP BY "id_number","crowd_index")

ERR: error parsing query: found ;, expected ) at line 1, char 102

答: InfluxQL 中的查询支持多个嵌套子查询,但不支持每个子查询多个 SELECT 语句。以下是多个嵌套子查询的示例

> SELECT SUM("max") FROM ( 
  SELECT MAX("min") FROM ( 
    SELECT MIN("subways") FROM "public_transit" GROUP BY "id_number","crowd_index")
  GROUP BY "id_number")

name: public_transit
time                  sum
----                  ---
1970-01-01T00:00:00Z  29

在您的情况下,您需要将子查询放入两个单独的查询中

SELECT MEAN("max") FROM ( 
  SELECT MAX("subways") FROM "public_transit" GROUP BY "id_number"); 
SELECT MEAN("min") FROM ( 
  SELECT MIN("subways") FROM "public_transit" GROUP BY "id_number","crowd_index")

name: public_transit
time                  mean
----                  ----
1970-01-01T00:00:00Z  14.5

name: public_transit
time                  mean
----                  ----
1970-01-01T00:00:00Z  12.75

标识符名称中的隐蔽字符

问: 我已成功将数据 写入 InfluxDB,但在尝试查询它时收到一个奇怪的错误(见下文)。我做错什么了吗?

> INSERT dot.com value=12

> SHOW MEASUREMENTS

name: measurements
name
----
dot.com               <--- yay!


> SELECT * FROM dot.com
ERR: retention policy not found: dot   <--- ??

答:  在查询中,如果 标识符 以数字开头、包含 [A-z,0-9,_] 以外的字符或如果是 InfluxQL 关键字,则需要用双引号引起来。在您的情况下,您的 measurement 名称包含句点,因此您需要在查询中用双引号引起来该名称

> SELECT * FROM "dot.com"

name: dot.com
time                            value
----                            -----
2017-03-08T01:24:36.117449459Z  12

如果您有兴趣,您会看到该错误,因为 InfluxDB 认为您正在尝试 完全限定 measurement 名称。您可以通过指定其数据库和 保留策略(以句点分隔)来完全限定 measurement。

> SELECT * FROM "tldr"."auto"."dot.com"
                |_____________________|
    "database"."retention-policy"."measurement"

name: dot.com
time                            value
----                            -----
2017-03-08T01:24:36.117449459Z  12

查看 FAQ 页面,了解有关查询中单引号和双引号的更多信息,并查看 数据探索页面,了解有关在 FROM 子句中指定 measurement 的更多信息。

下一步是什么

  • 下载 TICK-stack 的下载页面已上线。
  • 云端部署: 开始免费试用 InfluxDB Cloud ,它具有完全托管的集群、Kapacitor 和 Grafana。
  • 在您的服务器上部署: 想在您的服务器上运行 InfluxDB 集群?免费试用 14 天的 InfluxDB Enterprise ,它具有用于部署、监控和重新平衡集群的直观 UI,以及管理备份和还原的功能。 
  • 讲述您的故事: 超过 300 家公司 分享了 InfluxDB 如何帮助他们取得成功的故事。提交您的客户评价,即可获得限量版帽衫作为感谢。