TL;DR InfluxDB技术技巧 - 查询与写入布尔值及检查字段类型
作者:Regan Kuchan / 开发者
2016年6月1日
导航至
在这篇博文中,我们回顾了本周最有趣的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。你需要使用true
、True
或TRUE
来在查询中引用该布尔值。
示例
> SELECT * FROM "hamlet" WHERE "tobe"=true
name: hamlet
------------
time tobe
2016-05-31T18:07:32.93151244Z true
有关更多InfluxDB技巧,请参阅我们的常见问题页面,并在InfluxDB用户组中自由提问。