Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Query Influxdb based on tags?

Tags:

influxdb

I have started playing around with Influxdb v0.13 and I have some dummy values in my test db where id is a tag and value is a field:

> SELECT * FROM dummy
name: dummy
--------------
time                    id     value
1468276508161069051     1234    12345
1468276539152853428     613     352
1468276543470535110     613     4899
1468276553853436191     1234    12

I get no results returned when I run this query:

> SELECT * FROM dummy WHERE id=1234

but I do get the following when querying with the field instead:

> SELECT * FROM dummy WHERE value=12
name: dummy
--------------
time                    id     value
1468276553853436191     1234    12

Am I doing something wrong here? I thought the point of tags were to be queried (since they are indexed and fields are not), but they seem to break my queries.

like image 275
Jtaks Avatar asked Jul 11 '16 22:07

Jtaks


People also ask

How do I query data from InfluxDB?

To perform an InfluxQL query, send a GET request to the /query endpoint, set the URL parameter db as the target database, and set the URL parameter q as your query. You can also use a POST request by sending the same parameters either as URL parameters or as part of the body with application/x-www-form-urlencoded .

What is fields and tags in InfluxDB?

InfluxDB lets you specify fields and tags, both being key/value pairs where the difference is that tags are automatically indexed. Because fields are not being indexed at all, on every query where InfluxDB is asked to find a specified field, it needs to sequentially scan every value of the field column.

How do I view Dimensions in InfluxDB?

influxdb Querying Influx Show measurements In-depth information about this can be found in the API docs 'Show Measurements'.

What is InfluxQL?

See the equivalent InfluxDB v2. 4 documentation: Query fields and tags. InfluxQL is an SQL-like query language for interacting with data in InfluxDB. The following sections detail InfluxQL's SELECT statement and useful query syntax for exploring your data.


1 Answers

It appears that Influx will treat every tag key and value we insert as string and this is evidently shown in their official documentation.

See: https://docs.influxdata.com/influxdb/v0.13/guides/writing_data/

When writing points, you must specify an existing database in the db query parameter. See the HTTP section on the Write Syntax page for a complete list of the available query parameters. The body of the POST - we call this the Line Protocol - contains the time-series data that you wish to store. They consist of a measurement, tags, fields, and a timestamp. InfluxDB requires a measurement name. Strictly speaking, tags are optional but most series include tags to differentiate data sources and to make querying both easy and efficient. Both tag keys and tag values are strings.

Note: the text in bold.

Hence to filter by tag key value - the query must be enquoted.

Example:

SELECT * FROM dummy WHERE id='1234'

like image 85
Samuel Toh Avatar answered Sep 18 '22 04:09

Samuel Toh