TL;DR InfluxDB技术提示 - Kapacitor执行查询

导航至

在这篇文章中,我们回顾了本周最有趣的InfluxDB和TICK-stack相关问题、解决方案、Kapacitor执行查询的教程和问答,以及您可能错过的来自GitHub、IRC和InfluxDB Google Group的内容。

使用Kapacitor自动化连续聚合

问题:我想每分钟自动执行一个查询,该查询对过去24小时的数据进行聚合,并增加查询的24小时时间范围一分钟。我尝试使用连续查询,但我觉得它无法完成我的需求——连续查询每分钟执行一次,但它总是查询相同的时间段。我想要的操作可以通过连续查询完成吗?还有其他方法可以实现吗?

以下是我想要自动化的几个示例查询

SELECT mean(water_pressure) INTO mean_pressures FROM sea WHERE time >= '2016-06-29T00:00:00Z' AND time <= '2016-06-30T00:00:00Z'

SELECT mean(water_pressure) INTO mean_pressures FROM sea WHERE time >= '2016-06-29T00:01:00Z' AND time <= '2016-06-30T00:01:00Z'

答案:您是对的,连续查询目前无法完成您想要的操作。我们建议使用Kapacitor自动执行查询并将结果写回InfluxDB。示例TICKscript

batch
   |query('SELECT mean(water_pressure) FROM science."autogen".sea')
        .period(1d)
        .every(1m)
        .align()
   |influxDBOut()
      .database('science')
      .retentionPolicy('autogen')
      .measurement('mean_pressures')
      .precision('s')

将整数写入InfluxDB

问题:我写入我认为是整数的数据库,但SHOW FIELD KEYS查询显示它们是浮点数。我该如何将整数写入数据库?

> INSERT cheese gouda=1
> SHOW FIELD KEYS
name: cheese
------------
fieldKey    fieldType
gouda       float

答案:默认情况下,InfluxDB假定所有数值字段值都是浮点数。要将整数写入数据库,请在您的行协议中,在字段值后添加一个i

> INSERT cheese gouda=1i
> SHOW FIELD KEYS
name: cheese
------------
fieldKey    fieldType
gouda       integer

使用双引号写入和查询标识符

问题:我已成功将数据写入InfluxDB,但我的查询返回空结果。我做了什么错误?

> INSERT "roses" "crepuscule"=8
> SHOW MEASUREMENTS
name: measurements
------------------
name
"roses"

> SELECT crepuscule FROM roses
> SELECT "crepuscule" FROM "roses"
>

答案:如果在您的行协议中双引号一个标识符,InfluxDB假定这些引号是标识符名称的一部分。要查询名称中包含双引号的标识符,您必须同时转义其双引号并双引号名称:以下查询应该更快

> SELECT "\"crepuscule\"" FROM "\"roses\""
name: "roses"
-------------
Time                             "crepuscule"
2016-06-29T20:54:46.926056779Z   8

通常,我们建议您在行协议中不要使用双引号标识符。

有关更多InfluxDB技巧,请参阅我们的常见问题解答页面,并在InfluxDB用户组中自由提问。

接下来是什么?