查询 InfluxDB
要使用 Flux 从 InfluxDB 查询数据,请使用 from() 和 range。
为每个函数提供以下参数:
- from():
- bucket 或 bucketID: InfluxDB 桶名称 或 桶 ID 进行查询。
- range():
- start: 返回结果的最早时间。
InfluxDB 要求查询是以时间为基准的,因此 from() 必须始终紧随其后
range()。
from(bucket: "example-bucket")
|> range(start: -1h)
远程查询 InfluxDB Cloud 或 2.x
要远程查询 InfluxDB Cloud 或 2.x,除了 bucket 或 bucketID 之外,还需要提供以下参数。
- host: InfluxDB Cloud 区域 URL 或 InfluxDB URL
- org 或 orgID: InfluxDB 组织名称或 ID
- token: InfluxDB API 令牌
from(
bucket: "example-bucket",
host: "http://localhost:8086",
org: "example-org",
token: "mYSup3r5Ecr3T70keN",
)
查询 InfluxDB 1.x
要查询 InfluxDB 1.x,请使用 database-name/retention-policy-name 命名约定作为您的存储桶名称。
例如,要从 telegraf 数据库中的 autogen 保留策略查询数据:
from(bucket: "telegraf/autogen")
|> range(start: -30m)
要查询数据库中的 默认保留策略,请使用相同的存储桶命名约定,但不要提供保留策略:
from(bucket: "telegraf/")
|> range(start: -30m)
结果结构
from() 和 range() 返回一个 表的流
按 系列
(度量、标签集和字段)分组。
每个表包括以下列:
- _start: 查询范围开始时间(由
range()定义) - _stop: 查询范围停止时间(由
range()定义) - _time: 数据时间戳
- _measurement: 测量名称
- _field: 字段键
- _value: 字段值
- 标签列: 每个标签的列,其中列标签是标签键,列值是标签值
下划线前缀的列
带有下划线 (_) 前缀的列被视为“系统”列。某些 Flux 函数需要这些列。
示例 InfluxDB 查询结果
将鼠标悬停在突出显示的文本上以查看描述。
| _开始 | _结束 | _时间 | _测量 | 主机 | _字段 | _值 |
|---|---|---|---|---|---|---|
| 2021-01-01T00:00:00Z | 2021-01-02T00:00:00Z | 2021-01-01T00:00:00Z | foo | host1 | bar | 1.2 |
| 2021-01-01T00:00:00Z | 2021-01-02T00:00:00Z | 2021-01-01T01:00:00Z | foo | 主机1 | bar | 1.6 |
| 2021-01-01T00:00:00Z | 2021-01-02T00:00:00Z | 2021-01-01T02:00:00Z | foo | host1 | bar | 2.1 |
| _开始 | _结束 | _时间 | _测量 | 主机 | _字段 | _值 |
|---|---|---|---|---|---|---|
| 2021-01-01T00:00:00Z | 2021-01-02T00:00:00Z | 2021-01-01T00:00:00Z | foo | host2 | bar | 1.2 |
| 2021-01-01T00:00:00Z | 2021-01-02T00:00:00Z | 2021-01-01T01:00:00Z | foo | host2 | bar | 1.7 |
| 2021-01-01T00:00:00Z | 2021-01-02T00:00:00Z | 2021-01-01T02:00:00Z | foo | host2 | bar | 2.1 |
像 InfluxQL 一样结构化结果
InfluxQL 返回每个字段作为列,其中列标签是字段键,列值是字段值。要使用 Flux 以类似方式结构化结果,请使用 pivot() 或 schema.fieldsAsCols() 将字段转为列。