TL;DR InfluxDB技术技巧 - 最有趣的InfluxDB & TICK STACK相关问题、解决方案 & 如何做
由 Regan Kuchan / 产品, 开发者
2017年3月9日
导航到
在本周的文章中,我们回顾了从GitHub、IRC和InfluxData社区中收集到的最有趣的InfluxDB和TICK-stack相关的问题、解决方案、教程和问答,这些内容您可能在上周错过了。
微秒语法的细微差别
问: 当我使用u
在查询中指定微秒时,我得到了预期的结果。当我使用相同的u
在配置文件中指定微秒时,我得到了一个解析配置
错误。这是我所期望的吗?配置文件中有没有指定微秒的方法?
查询中的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精度 | 配置文件 |
---|---|---|---|---|
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关键字,则应使用双引号。在你的情况下,你的度量名称中包含一个点,因此您需要在查询中对该名称进行双引号处理。
> SELECT * FROM "dot.com"
name: dot.com
time value
---- -----
2017-03-08T01:24:36.117449459Z 12
如果您感兴趣,您看到这个错误是因为InfluxDB认为您正在尝试完全限定测量名称。您通过指定其数据库和保留策略来完全限定测量,它们之间用点分隔
> SELECT * FROM "tldr"."auto"."dot.com"
|_____________________|
"database"."retention-policy"."measurement"
name: dot.com
time value
---- -----
2017-03-08T01:24:36.117449459Z 12
请查看常见问题页面,了解更多关于查询中单引号和双引号的使用,并查看数据探索页面,了解更多关于在FROM
子句中指定测量方法的信息。
接下来是什么
- 下载 页面上的TICK栈下载已启动。
- 云上部署:免费试用InfluxDB Cloud,它具有完全管理的集群、Kapacitor和Grafana。
- 服务器部署:想在您的服务器上运行InfluxDB集群?免费试用14天的InfluxDB Enterprise,它具有直观的界面用于部署、监控和平衡集群,以及管理备份和恢复。
- 分享您的经历: 300多家公司 分享了他们如何通过InfluxDB取得成功的故事。提交您的评价,作为感谢,您将获得限量版卫衣。