The top level name is called a measurement. These names can contain any characters. Then there are field names, field values, tag keys and tag values, which can also contain any characters. Because of this, anywhere a measurement name, field name, field value, tag name, or tag value appears should be able to get wrapped in double quotes to deal with special characters.
-- get the top 10 host measurements for the last hour (same host can appear multiple times)
SELECT top(10, value), host FROM cpu WHERE time > now() - 1h
-- get the top 10 unique hosts for the last hour
SELECT top(10, value), distinct(host) FROM cpu WHERE time > now() - 1h
DROP MEASUREMENT <name>
DROP MEASUREMENT cpu WHERE region = 'uswest'
List series queries are for pulling out individual series from measurement names and tag data. They're useful for discovery.
-- list measurement names
LIST MEASUREMENTS
LIST MEASUREMENTS WHERE service = 'redis'
-- list all series across all measurements/tagsets
LIST SERIES
-- get a list of all series for any measurements where tag key region = tak value 'uswest'
LIST SERIES WHERE region = 'uswest'
-- get a list of all tag keys across all measurements
LIST TAG KEYS
-- list all the tag keys for a given measurement
LIST TAG KEYS FROM cpu
LIST TAG KEYS FROM temperature, wind_speed
-- list all the tag values. note that at least one WHERE key = '...' clause is required
LIST TAG VALUES WHERE key = 'region'
LIST TAG VALUES FROM cpu WHERE region = 'uswest' and key = 'host'
-- and you can do stuff against fields
LIST FIELD KEYS FROM cpu
-- but you can't do this
LIST FIELD VALUES
-- we don't index field values, so this query should be invalid.
Note that FROM
and WHERE
are optional clauses in all of the list series queries.
And the list series output looks like this:
[
{
"name": "cpu",
"columns": ["id", "region", "host"],
"values": [
1, "uswest", "servera",
2, "uswest", "serverb"
]
},
{
"name": "reponse_time",
"columns": ["id", "application", "host"],
"values": [
3, "myRailsApp", "servera"
]
}
]
Continous queries are going to be inspired by MySQL TRIGGER
syntax:
http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html
Instead of having automatically-assigned ids, named continuous queries allows for some level of duplication prevention, particularly in the case where creation is scripted.
CREATE CONTINUOUS QUERY <name> AS SELECT ... FROM ...
DROP CONTINUOUS QUERY <name>
LIST CONTINUOUS QUERIES