文档文档

SELECT 语句

使用 SELECT 语句从一个或多个 measurement(度量) 中查询数据。SELECT 语句必须包含 SELECT 子句FROM 子句

语法

SELECT field_expression[, ..., field_expression_n[, tag_expression[, ..., tag_expression_n]]] FROM measurement_expression[, ..., measurement_expression_n]

SELECT 子句

SELECT 子句支持多种格式来标识要查询的数据。它需要一个或多个字段表达式和可选的标签表达式

  • field_expression:用于标识要在查询结果中返回的一个或多个字段的表达式。可以是 字段键、常量、正则表达式通配符 (*)函数表达式 以及算术运算符的任意组合。
  • tag_expression:用于标识要在查询结果中返回的一个或多个标签的表达式。可以是 标签键 或常量。

Select 子句行为

  • SELECT field_key - 返回特定字段。
  • SELECT field_key1, field_key2 - 返回两个特定字段。
  • SELECT field_key, tag_key - 返回特定字段和标签。
  • SELECT * - 返回所有 字段标签请参阅 通配符表达式
  • SELECT /^[t]/ - 返回键与正则表达式匹配的所有 字段标签。至少一个字段键必须与正则表达式匹配。如果没有字段键与正则表达式匹配,则不返回任何结果。

FROM 子句

FROM 子句指定要查询的 measurement(度量)子查询。它需要一个或多个逗号分隔的 measurement 表达式子查询

measurement_expression

measurement 表达式标识要查询的 measurement。它可以是 measurement 名称、完全限定的 measurement、常量或 正则表达式

  • Measurement 名称:当仅使用 measurement 名称时,InfluxQL 假定查询请求中指定的数据库的默认保留策略。

    FROM measurement
    
  • 完全限定的 Measurement:完全限定的 measurement 包括数据库名称、保留策略名称和 measurement 名称,每个名称之间用句点 (.) 分隔。如果未指定保留策略,则 InfluxQL 使用指定数据库的默认保留策略。

FROM database.retention_policy.measurement

-- Fully-qualified measurement with default retention policy
FROM database..measurement

InfluxQL 保留策略

在 InfluxDB Clustered 中,保留策略不是数据模型的一部分,这与 InfluxDB 1.x 不同。每个 InfluxDB Clustered 数据库都有一个保留期,该保留期定义了数据库中要保留数据的最长期限。要在 InfluxQL 查询中使用完全限定的 measurement,请在 创建数据库 时使用以下命名约定

database_name/retention_policy

子查询

InfluxQL 子查询是嵌套在 InfluxQL 查询的 FROM 子句中的查询。外部查询查询由内部查询(子查询)返回的结果。

有关更多信息,请参阅 InfluxQL 子查询

SELECT 语句的显著行为

必须至少查询一个字段

查询需要在 SELECT 子句中至少包含一个 字段键 才能返回数据。如果 SELECT 子句仅包含 标签键,则查询返回空结果。当在 SELECT 子句中使用正则表达式时,如果正则表达式仅匹配标签键而没有字段键,则查询返回空结果。

要返回与标签键关联的数据,请在 SELECT 子句中至少包含一个字段键。

通配符表达式

当在 SELECT 子句中使用通配符表达式 (*) 时,查询返回所有标签和字段。如果将 函数 应用于通配符表达式,则查询返回应用了函数的所有字段,但不返回标签,除非它们包含在 SELECT 子句中。

不能同时包含聚合字段表达式和非聚合字段表达式

SELECT 语句不能包含聚合字段表达式(使用 聚合选择器 函数的表达式)非聚合字段表达式。例如,在以下查询中,聚合函数应用于一个字段,但未应用于另一个字段

SELECT mean(temp), hum FROM home

此查询返回错误。有关更多信息,请参阅 关于混合聚合查询和非聚合查询不受支持的错误的错误信息

数据类型和类型转换操作

SELECT 子句 支持使用 :: 语法指定字段的类型和基本类型转换操作。

SELECT field_expression::type FROM measurement_expression

:: 语法允许用户在查询中执行基本类型转换操作。目前,InfluxQL 支持将数值型 字段值 转换为其他数值类型。转换为标识符类型充当结果过滤器,并且仅返回该特定标识符类型的列以及 time 列。

数值类型
  • float
  • integer
  • unsigned
非数值类型
  • string
  • boolean
标识符类型
  • field
  • tag

如果查询尝试将数值类型值转换为非数值类型值,反之亦然,则 InfluxQL 不返回任何数据。

将浮点值转换为整数或无符号整数时,浮点值在小数点处被截断。不执行四舍五入。

SELECT 语句示例

以下示例使用以下示例数据集

从 measurement 中选择所有字段和标签

从 measurement 中选择特定标签和字段

从 measurement 中选择所有字段

从 measurement 中选择一个字段并执行基本算术运算

从多个 measurement 中选择所有数据

从完全限定的 measurement(使用默认保留策略)中选择所有数据

类型转换示例

将整数型字段转换为浮点型

将浮点型字段转换为整数型

将浮点型字段转换为无符号整数型


此页内容是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。它是一个用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看