TL;DR InfluxDB 技术提示 - 最有趣的 InfluxDB 和 TICK Stack 相关问题、解决方法和操作指南
作者:Regan Kuchan / 产品, 开发者
2017 年 3 月 9 日
导航至
在本周的文章中,我们回顾了来自 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 如何帮助他们取得成功的故事。提交您的客户评价,即可获得限量版帽衫作为感谢。