2017-08-17 35 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'