InfluxDB有没有在搜索查询中使用按位运算符的方法?例如,如果我想找到其中一个标签或字段值的第2位被设置的所有点,我想可以这样做:influxdb - 选择使用位测试?
SELECT * FROM测量,其中TAG_NAME &(1 < < 1)=真
或
SELECT * FROM测量WHERE(TAG_NAME >> 1)& 1 =真
InfluxDB有没有在搜索查询中使用按位运算符的方法?例如,如果我想找到其中一个标签或字段值的第2位被设置的所有点,我想可以这样做:influxdb - 选择使用位测试?
SELECT * FROM测量,其中TAG_NAME &(1 < < 1)=真
或
SELECT * FROM测量WHERE(TAG_NAME >> 1)& 1 =真
问:我能找到所有具有第二位的设置点tag
或field
?
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
一些值得关注的是,大量涌入的位运算符仅适用于boolean
和integer
。它不会在浮动上工作。
参考: 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'