schema查询语法

InfluxQL是一种类似SQL的查询语言,用于与InfluxDB中的数据进行交互。下面我们要介绍一些有用的查询schema的语法:

  • SHOW DATABASES

  • SHOW RETENTION POLICIES

  • SHOW SERIES

  • SHOW MEASUREMENTS

  • SHOW TAG KEYS

  • SHOW TAG VALUES

  • SHOW FIELD KEYS

在开始之前,默认已经登入了CLI:

$ influx -precision rfc3339 
Connected to http://localhost:8086 version 1.3.x
InfluxDB shell 1.3.x
>

SHOW DATABASES

返回当前实例上的所有的数据库。

语法

例子

例一:运行SHOW DATABASES查询

SHOW RETENTION POLICIES

返回指定数据库的保留策略的列表。

语法

语法描述

ON <database_name>是可选的。如果查询不包括ON <database_name>,则必须在CLI中使用USE <database_name>指定数据库,或者在HTTP API请求中指定db查询字符串参数。

例子

例一:运行带有ON子句的SHOW RETENTION POLICIES

该查询以表格格式返回数据库NOAA_water_database中的保留策略列表。 该数据库有一个名为autogen的保留策略。该保留策略具有无限持续时间,持续时间七天的shard group,副本数为1,并且是数据库的DEFAULT保留策略。

例二:运行不带ON子句的SHOW RETENTION POLICIES

CLI

使用USE <database_name>指定数据库:

HTTP API

db参数指定数据库:

SHOW SERIES

返回指定数据库的series列表。

语法

语法描述

ON <database_name>是可选的。如果查询不包括ON <database_name>,则必须在CLI中使用USE <database_name>指定数据库,或者在HTTP API请求中指定db查询字符串参数。

FROMWHERELIMITOFFSET子句是可选的。 WHERE子句支持tag比较; field比较对SHOW SERIES查询无效。

WHERE子句中支持的运算符:

= 等于 <> 不等于 != 不等于 =~ 匹配 !~ 不匹配

例子

例一:运行带ON子句的SHOW SERIES

查询的输出类似于行协议格式。第一个逗号之前的所有内容都是measurement名称。第一个逗号后的所有内容都是tag key或tag value。 NOAA_water_database有五个不同的measurement和14个不同的series。

例二:运行不带ON子句的SHOW SERIES

CLI

USE <database_name>指定数据库:

HTTP API

db参数指定数据库:

例三:运行带有多个子句的SHOW SERIES

查询返回数据库NOAA_water_database中与measurement h2o_quality相关联的并且tag为location = coyote_creek的两个series。

SHOW MEASUREMENTS

返回指定数据库的measurement列表。

语法

语法描述

ON <database_name>是可选的。如果查询不包括ON <database_name>,则必须在CLI中使用USE <database_name>指定数据库,或者在HTTP API请求中指定db查询字符串参数。

WITHWHERELIMITOFFSET子句是可选的。 WHERE子句支持tag比较; field比较对SHOW MEASUREMENTS查询无效。

WHERE子句中支持的运算符:

= 等于 <> 不等于 != 不等于 =~ 匹配 !~ 不匹配

例子

例一:运行带ON子句的SHOW MEASUREMENTS

查询返回数据库NOAA_water_database中的measurement列表。数据库有五个measurement:average_temperatureh2o_feeth2o_pHh2o_qualityh2o_temperature

例二:运行不带ON子句的SHOW MEASUREMENTS

CLI

USE <database_name>指定数据库。

HTTP API

使用参数db指定数据库:

例三:运行有多个子句的SHOW MEASUREMENTS(1)

该查询返回以以h2o开头的NOAA_water_database数据库中的measurement。 LIMITOFFSET子句将返回的measurement名称,并且数量限制为两个,再将结果偏移一个,所以跳过了measurementh2o_feet

例四:运行有多个子句的SHOW MEASUREMENTS(2)

该查询返回NOAA_water_database中以h2o开头,并且tagrandtag包含一个整数的所有measurement。

SHOW TAG KEYS

返回指定数据库的tag key列表。

语法

语法描述

ON <database_name>是可选的。如果查询不包括ON <database_name>,则必须在CLI中使用USE <database_name>指定数据库,或者在HTTP API请求中指定db查询字符串参数。

FROMWHERE子句是可选的。 WHERE子句支持tag比较; field比较对SHOW TAG KEYS查询无效。

WHERE子句中支持的运算符:

= 等于 <> 不等于 != 不等于 =~ 匹配 !~ 不匹配

例子

例一:运行带有ON子句的SHOW TAG KEYS

查询返回数据库NOAA_water_database中的tag key列表。输出按measurement名称给tag key分组; 它显示每个measurement都具有tag keylocation,并且measurementh2o_quality具有额外的tag key randtag

例二:运行不带ON子句的SHOW TAG KEYS

CLI

USE <database_name>指定数据库:

HTTP API

用参数db指定数据库:

例三:运行带有多个子句的SHOW TAG KEYS

该查询从数据库NOAA_water_database的measurementh2o_quality中返回tag key。 LIMITOFFSET子句限制返回到一个tag key,再将结果偏移一个。

SHOW TAG VALUES

返回数据库中指定tag key的tag value列表。

语法

语法描述

ON <database_name>是可选的。如果查询不包括ON <database_name>,则必须在CLI中使用USE <database_name>指定数据库,或者在HTTP API请求中指定db查询字符串参数。

WITH子句是必须的,它支持指定一个单独的tag key、一个表达式或是多个tag key。

FROMWHERELIMITOFFSET子句是可选的。 WHERE子句支持tag比较; field比较对SHOW TAG KEYS查询无效。

WHERE子句中支持的运算符:

= 等于 <> 不等于 != 不等于 =~ 匹配 !~ 不匹配

例子

例一:运行带有ON子句的SHOW TAG VALUES

该查询返回数据库NOAA_water_database,tag key为randtag的所有tag value。SHOW TAG VALUES将结果按measurement名字分组。

例二:运行不带ON子句的SHOW TAG VALUES

CLI

USE <database_name>指定数据库:

HTTP API

用参数db指定数据库:

例三:运行带有多个子句的SHOW TAG VALUES

该查询从数据库NOAA_water_database的所有measurement中返回tag key为location或者randtag,并且randtag的tag value不为空的tag value。 LIMIT子句限制返回三个tag value。

SHOW FIELD KEYS

返回field key以及其field value的数据类型。

语法

语法描述

ON <database_name>是可选的。如果查询不包括ON <database_name>,则必须在CLI中使用USE <database_name>指定数据库,或者在HTTP API请求中指定db查询字符串参数。

FROM子句也是可选的。

例子

例一:运行一个带ON子句的SHOW FIELD KEYS

该查询返回数据库NOAA_water_database中的每个measurement对应的field key以及其数据类型。

例二:运行一个不带ON子句的SHOW FIELD KEYS

CLI

USE <database_name>指定数据库:

HTTP API

用参数db指定数据库:

例三:运行带有FROM子句的SHOW FIELD KEYS

该查询返回数据库NOAA_water_database中measurement为h2o_feet的对应的field key以及其数据类型。

SHOW FIELD KEYS的常见问题

问题一:SHOW FIELD KEYS和field 类型的差异

field value的数据类型在同一个shard里面一样但是在多个shard里面可以不同,SHOW FIELD KEYS遍历每个shard返回与field key相关的每种数据类型。

例子

field all_the_types中存储了四个不同的数据类型

注意SHOW FIELD KEYS处理field的类型差异和SELECT语句不一样。

Last updated

Was this helpful?