2017-08-17 36 views
1

InfluxDB有没有在搜索查询中使用按位运算符的方法?例如,如果我想找到其中一个标签或字段值的第2位被设置的所有点,我想可以这样做:influxdb - 选择使用位测试?

SELECT * FROM测量,其中TAG_NAME &(1 < < 1)=真

SELECT * FROM测量WHERE(TAG_NAME >> 1)& 1 =真

回答

0

问:我能找到所有具有第二位的设置点tagfield

A:tag不可能,因为它的值始终为string类型。

是为Field执行它filtering能有性能影响,因为field不被索引。也就是说,每个SELECT查询都是全表扫描。

bitwise operators仅在潮流1.3.x中引入,所以如果您使用的是早期版本,那么您将无法执行以下操作。

假设您有以下dataset

> show field keys from measurement_abcd 
name: measurement_abcd 
fieldKey fieldType 
-------- --------- 
value integer 

> select * from measurement_abcd 
name: measurement_abcd 
time    tag1 value 
----    ---- ----- 
1434086562000000000  2 
1434087562000000000  3 
1434088562000000000  4 
1434089562000000000 abc 5 
1434089562000000000  5 

您可以检索具有第2位由在现场value设定的行;

SELECT * FROM measurement_abcd WHERE "value" | 2 = "value"

这会给你以下输出;

> SELECT * FROM measurement_abcd WHERE "value" | 2 = "value" 
name: measurement_abcd 
time    tag1 value 
----    ---- ----- 
1434086562000000000  2 
1434087562000000000  3 

一些值得关注的是,大量涌入的位运算符仅适用于booleaninteger。它不会在浮动上工作。

参考: https://docs.influxdata.com/influxdb/v1.3/query_language/math_operators/#bitwise-and

使用以下数据来复制上述实验:

卷曲-i -XPOST 'http://localhost:8086/write?db=stackoverflow1' --data二进制“measurement_abcd值= 2I 1434086562000000000 '

curl -i -XPOST'http://localhost:8086/write?db=stackoverflow1'--data-binary'measurement_abcd value = 3i 1434087562000000000'

卷曲-i -XPOST 'http://localhost:8086/write?db=stackoverflow1' --data二进制 'measurement_abcd值= 4I 1434088562000000000'

卷曲-i -XPOST 'http://localhost:8086/write?db=stackoverflow1' --data二进制 “measurement_abcd值= 5I 1434089562000000000'