SELECT 语句
使用 SELECT
语句从特定的测量或多个测量中查询数据。
语法
SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]
注意:SELECT
语句需要 SELECT
子句和 FROM
子句。
SELECT
子句
SELECT
子句支持多种格式来指定数据
SELECT *
- 返回所有字段和标签。SELECT "<field_key>"
- 返回特定字段。SELECT "<field_key>","<field_key>"
- 返回多个字段。SELECT "<field_key>","<tag_key>"
- 返回特定字段和标签。当SELECT
子句包含标签时,必须至少指定一个字段。SELECT "<field_key>"::field,"<tag_key>"::tag
- 返回特定字段和标签。::[field | tag]
语法指定标识符的类型。使用此语法来区分具有相同名称的字段键和标签键。
其他支持的功能包括
注意:SELECT 语句不能同时包含聚合函数和非聚合函数、字段键或标签键。有关更多信息,请参阅关于混合使用聚合查询和非聚合查询的错误。
FROM
子句
SELECT
子句指定要查询的测量。此子句支持多种格式来指定测量
FROM <measurement_name>
- 从测量中返回数据。FROM <measurement_name>,<measurement_name>
- 从多个测量中返回数据。FROM <database_name>.<retention_policy_name>.<measurement_name>
- 从完全限定的测量中返回数据。FROM <database_name>..<measurement_name>
- 从测量中返回数据。
引号
如果标识符包含 [A-z,0-9,_]
以外的字符,以数字开头,或者是InfluxQL 关键字,必须使用双引号引起来。虽然并非总是必要,但我们建议您使用双引号引起来标识符。
注意:InfluxQL 引号准则与行协议引号准则不同。请查看查询中单引号和双引号的规则。
示例
SELECT 语句的常见问题
在 SELECT 语句中选择标签键
查询需要在 SELECT
子句中至少包含一个字段键才能返回数据。如果 SELECT
子句仅包含单个标签键或多个标签键,则查询返回空响应。
示例
以下查询不返回任何数据,因为它在 SELECT
子句中指定了单个标签键 (location
)
SELECT "location" FROM "h2o_feet"
> No results
要返回与 location
标签键关联的任何数据,查询的 SELECT
子句必须至少包含一个字段键 (water_level
)
SELECT "water_level","location" FROM "h2o_feet"
输出
time | water_level | location |
---|---|---|
2019-08-17T00:00:00Z | 8.1200000000 | coyote_creek |
2019-08-17T00:00:00Z | 2.0640000000 | santa_monica |
2019-08-17T 00:06:00Z | 8.0050000000 | coyote_creek |
2019-08-17T00:06:00Z | 2.1160000000 | santa_monica |
2019-08-17T00:12:00Z | 7.8870000000 | coyote_creek |
2019-08-17T00:12:00Z | 2.0280000000 | santa_monica |
2019-08-17T00:18:00Z | 7.7620000000 | coyote_creek |
2019-08-17T00:18:00Z | 2.1260000000 | santa_monica |
正则表达式
InfluxQL 支持在指定以下内容时使用正则表达式
语法
SELECT /<regular_expression_field_key>/ FROM /<regular_expression_measurement>/ WHERE [<tag_key> <operator> /<regular_expression_tag_value>/ | <field_key> <operator> /<regular_expression_field_value>/] GROUP BY /<regular_expression_tag_key>/
有关更多信息,请参阅正则表达式。
数据类型和类型转换操作
SELECT
子句支持使用 ::
语法指定字段的类型和基本类型转换操作。
数据类型
字段值可以是浮点数、整数、字符串或布尔值。::
语法允许用户在查询中指定字段的类型。
字段值类型可能会因分片组而异。在这些情况下,可能需要在 SELECT
子句中指定字段值类型。有关 InfluxDB 如何处理字段值类型差异的更多信息,请参阅常见问题解答文档。
语法
SELECT_clause <field_key>::<type> FROM_clause
type
可以是 float
、integer
、string
或 boolean
。在大多数情况下,如果 field_key
未存储指定 type
的数据,则 InfluxDB 不返回任何数据。有关更多信息,请参阅类型转换操作。
示例
SELECT "water_level"::float FROM "h2o_feet" LIMIT 4
输出
time | water_level |
---|---|
2019-08-17T00:00:00Z | 8.1200000000 |
2019-08-17T00:00:00Z | 2.0640000000 |
2019-08-17T00:06:00Z | 8.0050000000 |
2019-08-17T00:06:00Z | 2.1160000000 |
该查询返回 water_level
字段键的浮点数值。
类型转换操作
::
语法允许用户在查询中执行基本类型转换操作。目前,InfluxDB 支持将字段值从整数转换为浮点数或从浮点数转换为整数。
语法
SELECT_clause <field_key>::<type> FROM_clause
type
可以是 float
或 integer
。
如果查询尝试将整数或浮点数转换为字符串或布尔值,则 InfluxDB 不返回任何数据。
示例
合并行为
InfluxQL 自动合并序列。
示例
多条语句
用分号 (;
) 分隔查询中的多个 SELECT
语句。
示例
SELECT MEAN("water_level") FROM "h2o_feet"; SELECT "water_level" FROM "h2o_feet" LIMIT 2
输出
time | mean |
---|---|
1970-01-01T00:00:00Z | 4.4419314021 |
time | water_level |
---|---|
2019-08-17T00:00:00Z | 8.12 |
2015-08-18T00:00:00Z | 2.064 |
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "h2o_feet",
"columns": [
"time",
"mean"
],
"values": [
[
"1970-01-01T00:00:00Z",
4.442107025822522
]
]
}
]
},
{
"statement_id": 1,
"series": [
{
"name": "h2o_feet",
"columns": [
"time",
"water_level"
],
"values": [
[
"2015-08-18T00:00:00Z",
8.12
],
[
"2015-08-18T00:00:00Z",
2.064
]
]
}
]
}
]
}
此页是否对您有帮助?
感谢您的反馈!