TL;DR InfluxDB技术技巧 - 查询与写入布尔值及检查字段类型

导航至

在这篇博文中,我们回顾了本周最有趣的InfluxDB和TICK-stack相关的问题、解决方案、如何使用布尔值编写以及从GitHub、IRC和InfluxDB Google Group中获取的Q&A,您可能错过了。

在非DEFAULT保留策略中查询数据

问题:我创建了一个名为secret_garden的新保留策略。我开始向该保留策略写入数据,日志显示写入成功,但当查询数据时,我得到一个空响应。我错在哪里了?

SHOW RETENTION POLICIES查询的结果

> SHOW RETENTION POLICIES ON "lands"
name	       duration	  shardGroupDuration   replicaN   DEFAULT
default	       0          168h0m0s             1          true
secret_garden  24h0m0s	  1h0m0s               1          false

SELECT查询的结果

> SELECT * FROM "foliage"
>

答案:保留策略secret_garden不是您数据库的DEFAULT保留策略(见SHOW RETENTION POLICIES输出的第五列)。

如果您正在查询的不是DEFAULT保留策略中的数据,则需要完全限定测量foliage。通过在FROM子句中指定数据库和保留策略来完全限定测量:<"database">.<"retention_policy">.<"measurement">

示例

> SELECT * FROM "lands"."secret_garden"."foliage"
name: foliage
-------------
time                             roses
2016-05-31T17:09:04.697144667Z   3
2016-05-31T17:09:07.096708707Z   5

检查字段类型

问题:是否有方法查看字段的类型?

答案:从InfluxDB 1.0版本开始,SHOW FIELD KEYS查询也会返回字段类型。

示例

> SHOW FIELD KEYS FROM all_the_types
name: all_the_types
-------------------
fieldKey  fieldType
blue      string
green     boolean
orange    integer
yellow    float

查询与写入布尔值

问题:我能够成功将布尔值写入数据库,但是似乎无法在查询的WHERE子句中使用它们。

> INSERT hamlet tobe=t
> INSERT hamlet tobe=f
> SELECT * FROM "hamlet" WHERE "tobe"=t
>

答案:写入和查询可接受的布尔语法不同。

在你的情况下,InfluxDB理解当你写入数据时t表示true,但是它不理解当你查询数据时t也表示true。你需要使用trueTrueTRUE来在查询中引用该布尔值。

示例

> SELECT * FROM "hamlet" WHERE "tobe"=true
name: hamlet
------------
time                             tobe
2016-05-31T18:07:32.93151244Z    true

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

接下来是什么?