文档文档

SELECT 语句

使用 SELECT 语句从一个或多个指标中查询数据。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_expression

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

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

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

FROM database.retention_policy.measurement

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

InfluxQL 保留策略

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

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 不返回任何数据。

将 float 值转换为 integer 或 unsigned integer 时,float 值将在小数点处截断。不执行舍入。

SELECT 语句示例

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

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

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

从指标中选择所有字段

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

从多个指标中选择所有数据

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

类型转换示例

将 integer 字段转换为 float

将 float 字段转换为 integer

将 float 字段转换为 unsigned integer


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 以 Core 的基础为构建,增加了高可用性、只读副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看