开始查询数据
- 3 / 3
InfluxDB Clustered 支持多种查询语言
- SQL:由 Apache Arrow DataFusion 查询引擎驱动的传统 SQL。支持的 SQL 语法类似于 PostgreSQL。
- InfluxQL:一种类似 SQL 的查询语言,旨在查询存储在 InfluxDB 中的时间序列数据。
本教程将引导您了解在 InfluxDB 中查询数据的基本原理,并侧重于使用 SQL 查询您的时间序列数据。InfluxDB SQL 实现是使用 Arrow Flight SQL 构建的,Arrow Flight SQL 是一种使用 Arrow 内存格式和 Flight RPC 框架与 SQL 数据库交互的协议。它利用了 Apache Arrow 的性能和 SQL 的简洁性。
本教程本节中的示例查询 get-started 数据库,以获取在 入门数据写入 部分中写入的数据。
执行查询的工具
InfluxDB Clustered 支持许多不同的工具来查询数据,包括
* 本教程涵盖influxctl
CLI*influx3
数据 CLI*- InfluxDB 3 客户端库*
- Flight 客户端
- Superset
- Grafana
- InfluxQL 与 InfluxDB v1 HTTP API
- Chronograf
/api/v2/query 不支持
InfluxDB Clustered 不支持 /api/v2/query
API 端点和相关的工具,例如 influx
CLI 和 InfluxDB v2 客户端库。
SQL 查询基础知识
InfluxDB Clustered SQL 实现由 Apache Arrow DataFusion 查询引擎驱动,该引擎提供类似于 PostgreSQL 的 SQL 语法。
这是 InfluxDB SQL 查询的简要介绍。有关更深入的详细信息,请参阅 使用 SQL 查询数据。
InfluxDB SQL 查询最常见的子句包括
* 必需- *
SELECT
:标识要从测量中查询的特定字段和标签,或使用通配符别名 (*
) 从测量中选择所有字段和标签。 - *
FROM
:标识要查询的测量。如果您来自 SQL 背景,则 InfluxDB 测量相当于关系表。 WHERE
:仅返回满足已定义条件的数据,例如在时间范围内、包含特定标签值等。GROUP BY
:将数据分组到 SQL 分区中,并将聚合或选择器函数应用于每个组。
-- Return the average temperature and humidity within time bounds from each room
SELECT
avg(temp),
avg(hum),
room
FROM
home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY
room
示例 SQL 查询
选择测量中的所有数据
SELECT * FROM home
选择时间范围内测量中的所有数据
SELECT
*
FROM
home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
在相对时间范围内选择特定字段
SELECT temp FROM home WHERE time >= now() - INTERVAL '1 day'
从测量中选择特定字段和标签
SELECT temp, room FROM home
根据标签值选择数据
SELECT * FROM home WHERE room = 'Kitchen'
在时间范围内根据标签值选择数据
SELECT
*
FROM
home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
AND room = 'Living Room'
通过应用基于间隔的聚合来降采样数据
SELECT
DATE_BIN(INTERVAL '1 hour', time, '2022-01-01T00:00:00Z'::TIMESTAMP) as _time,
room,
selector_max(temp, time)['value'] AS 'max temp'
FROM
home
GROUP BY
_time,
'max temp',
room
ORDER BY room, _time
执行 SQL 查询
开始使用以下工具之一来查询存储在 InfluxDB Clustered 数据库中的数据
influxctl
CLI:使用influxctl
CLI 从命令行查询数据。influx3
CLI:使用基于 Python 的influx3
CLI 从终端命令行查询数据。- InfluxDB 3 客户端库:使用特定语言(Python、Go 等)的客户端在终端或自定义代码中执行查询。
- Grafana:使用 FlightSQL 数据源插件,来查询、连接和可视化数据。
对于此示例,请使用以下查询来选择在 2022-01-01T08:00:00Z 和 2022-01-01T20:00:00Z 之间写入到 get-started 数据库的所有数据。
SELECT
*
FROM
home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
本入门教程中的一些示例假设您的 InfluxDB 凭据(URL 和 令牌)由 环境变量 提供。
使用 influxctl query
命令 查询您的 InfluxDB 集群中的 家庭传感器示例数据。提供以下内容
- 要查询的数据库名称,使用
--database
标志 - 数据库令牌,使用
--token
标志(使用在 入门 - 设置 InfluxDB Clustered 中创建的INFLUX_TOKEN
环境变量) - SQL 查询
influxctl query \
--database get-started \
--token $INFLUX_TOKEN \
"SELECT
*
FROM
home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'"
使用 SQL 和 influx3
CLI 查询 InfluxDB 3。
以下步骤包括设置 Python 虚拟环境,这已在 入门数据写入 中介绍过。如果您的项目的虚拟环境已在运行,请跳至步骤 3。
为您的项目创建一个目录并切换到该目录
mkdir influx3-query-example && cd $_
要创建并激活 Python 虚拟环境,请运行以下命令
python -m venv envs/virtual-env && . envs/virtual-env/bin/activate
安装 CLI 包(已在 数据写入部分 中安装)。
pip install influxdb3-python-cli
安装
influxdb3-python-cli
还会安装pyarrow
库,用于处理从查询返回的 Arrow 数据。创建
config.json
配置文件。influx3 config \ --name="config-clustered" \ --database="get-started" \ --host="cluster-host.com" \ --token="DATABASE_TOKEN" \ --org="ORG_ID"
替换以下内容
DATABASE_TOKEN
:具有对 get-started 数据库读取权限的 数据库令牌ORG_ID
:任何非空字符串(InfluxDB 忽略此参数,但客户端需要它)
输入
influx3 sql
命令和您的 SQL 查询语句。influx3 sql "SELECT * FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'"
influx3
在您的终端中显示查询结果。
使用 influxdb_client_3
客户端库模块将 InfluxDB Clustered 与您的 Python 代码集成。客户端库支持将数据写入 InfluxDB 并使用 SQL 或 InfluxQL 查询数据。
以下步骤包括设置 Python 虚拟环境,这已在 入门数据写入 中介绍过。如果您的项目的虚拟环境已在运行,请跳至步骤 3。
在您在 数据写入部分 中创建的
influxdb_py_client
模块目录中打开一个终端要创建并激活您的 Python 虚拟环境,请在您的终端中输入以下命令
python -m venv envs/virtual-env && . ./envs/virtual-env/bin/activate
安装以下依赖项
* 已在 数据写入部分 中安装
influxdb3-python
*:提供 InfluxDBinfluxdb_client_3
Python 客户端库模块,并安装pyarrow
包,用于处理从查询返回的 Arrow 数据。pandas
:提供pandas
函数、模块和数据结构,用于分析和操作数据。tabulate
:提供tabulate
函数,用于格式化表格数据。pandas 需要此模块才能将数据格式化为 Markdown。
在您的终端中,输入以下命令
pip install influxdb3-python pandas tabulate
在您的终端或编辑器中,为您的代码创建一个新文件 - 例如:
query.py
。
在
query.py
中,输入以下示例代码from influxdb_client_3 import InfluxDBClient3 client = InfluxDBClient3( host=f"cluster-host.com", token=f"DATABASE_TOKEN", database=f"get-started", ) sql = ''' SELECT * FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z' ''' table = client.query(query=sql) assert table['room'], "Expect table to have room column." print(table.to_pandas().to_markdown())
重要提示:如果使用 Windows,请指定 Windows 证书路径
实例化客户端时,Python 会查找 SSL/TLS 证书颁发机构 (CA) 证书,以验证服务器的真实性。如果使用不符合 POSIX 标准的操作系统(例如 Windows),则需要指定 Python 可以访问的系统上的证书捆绑包路径。
以下示例演示如何使用 Python certifi
包 和客户端库选项来向 Python Flight 客户端提供可信证书捆绑包
在您的终端中,安装 Python
certifi
包。pip install certifi
在您的 Python 代码中,导入
certifi
并调用certifi.where()
方法来检索证书路径。实例化客户端时,传递
flight_client_options.tls_root_certs=<ROOT_CERT_PATH>
选项以及证书路径 - 例如from influxdb_client_3 import InfluxDBClient3, flight_client_options import os import certifi fh = open(certifi.where(), "r") cert = fh.read() fh.close() client = InfluxDBClient3( host=f"cluster-host.com", token=f"DATABASE_TOKEN", database=f"get-started", flight_client_options=flight_client_options( tls_root_certs=cert))
有关更多信息,请参阅 influxdb_client_3
查询异常。
示例代码执行以下操作
从
influxdb_client_3
模块导入InfluxDBClient3
构造函数。使用凭据调用
InfluxDBClient3()
构造函数方法,以实例化具有以下凭据的 InfluxDBclient
host
:InfluxDB 集群 URL(不带https://
协议或尾部斜杠)token
:具有对指定数据库读取权限的 数据库令牌。将其存储在密钥存储或环境变量中,以避免暴露原始令牌字符串。database
:要查询的 InfluxDB Clustered 数据库的名称
定义要执行的 SQL 查询,并将其分配给
query
变量。使用 SQL 查询调用
client.query()
方法。query()
向 InfluxDB 发送 Flight 请求,查询数据库,从端点检索结果数据,然后返回分配给table
变量的pyarrow.Table
。调用
to_pandas()
方法,将 Arrow 表转换为pandas.DataFrame
。调用
pandas.DataFrame.to_markdown()
方法,将 DataFrame 转换为 Markdown 表格。调用
print()
方法,将 Markdown 表格打印到 stdout。输入以下命令以运行程序并查询您的 InfluxDB 集群
python query.py
查看返回的 Markdown 表格
co | hum | room | temp | time | |
---|---|---|---|---|---|
0 | 0 | 35.9 | 厨房 | 21 | 2022-01-01 08:00:00 |
1 | 0 | 36.2 | 厨房 | 23 | 2022-01-01 09:00:00 |
2 | 0 | 36.1 | 厨房 | 22.7 | 2022-01-01 10:00:00 |
3 | 0 | 36 | 厨房 | 22.4 | 2022-01-01 11:00:00 |
4 | 0 | 36 | 厨房 | 22.5 | 2022-01-01 12:00:00 |
5 | 1 | 36.5 | 厨房 | 22.8 | 2022-01-01 13:00:00 |
6 | 1 | 36.3 | 厨房 | 22.8 | 2022-01-01 14:00:00 |
7 | 3 | 36.2 | 厨房 | 22.7 | 2022-01-01 15:00:00 |
8 | 7 | 36 | 厨房 | 22.4 | 2022-01-01 16:00:00 |
9 | 9 | 36 | 厨房 | 22.7 | 2022-01-01 17:00:00 |
10 | 18 | 36.9 | 厨房 | 23.3 | 2022-01-01 18:00:00 |
11 | 22 | 36.6 | 厨房 | 23.1 | 2022-01-01 19:00:00 |
12 | 26 | 36.5 | 厨房 | 22.7 | 2022-01-01 20:00:00 |
13 | 0 | 35.9 | 客厅 | 21.1 | 2022-01-01 08:00:00 |
14 | 0 | 35.9 | 客厅 | 21.4 | 2022-01-01 09:00:00 |
15 | 0 | 36 | 客厅 | 21.8 | 2022-01-01 10:00:00 |
16 | 0 | 36 | 客厅 | 22.2 | 2022-01-01 11:00:00 |
17 | 0 | 35.9 | 客厅 | 22.2 | 2022-01-01 12:00:00 |
18 | 0 | 36 | 客厅 | 22.4 | 2022-01-01 13:00:00 |
19 | 0 | 36.1 | 客厅 | 22.3 | 2022-01-01 14:00:00 |
20 | 1 | 36.1 | 客厅 | 22.3 | 2022-01-01 15:00:00 |
21 | 4 | 36 | 客厅 | 22.4 | 2022-01-01 16:00:00 |
22 | 5 | 35.9 | 客厅 | 22.6 | 2022-01-01 17:00:00 |
23 | 9 | 36.2 | 客厅 | 22.8 | 2022-01-01 18:00:00 |
24 | 14 | 36.3 | 客厅 | 22.5 | 2022-01-01 19:00:00 |
25 | 17 | 36.4 | 客厅 | 22.2 | 2022-01-01 20:00:00 |
在您在 数据写入部分 中创建的
influxdb_go_client
目录中,创建一个名为query.go
的新文件。在
query.go
中,输入以下示例代码package main import ( "context" "fmt" "io" "os" "time" "text/tabwriter" "github.com/InfluxCommunity/influxdb3-go/v2/influxdb3" ) func Query() error { // INFLUX_TOKEN is an environment variable you created // for your database read token. token := os.Getenv("INFLUX_TOKEN") // Instantiate the client. client, err := influxdb3.New(influxdb3.ClientConfig{ Host: "https://cluster-host.com", Token: token, Database: "get-started", }) // Close the client when the function returns. defer func(client *influxdb3.Client) { err := client.Close() if err != nil { panic(err) } }(client) // Define the query. query := `SELECT * FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'` // Execute the query. iterator, err := client.Query(context.Background(), query) if err != nil { panic(err) } w := tabwriter.NewWriter(io.Discard, 4, 4, 1, ' ', 0) w.Init(os.Stdout, 0, 8, 0, '\t', 0) fmt.Fprintln(w, "time\troom\ttemp\thum\tco") // Iterate over rows and prints column values in table format. for iterator.Next() { row := iterator.Value() // Use Go time package to format unix timestamp // as a time with timezone layout (RFC3339). time := (row["time"].(time.Time)). Format(time.RFC3339) fmt.Fprintf(w, "%s\t%s\t%d\t%.1f\t%.1f\n", time, row["room"], row["co"], row["hum"], row["temp"]) } w.Flush() return nil }
示例代码执行以下操作
导入以下包
context
fmt
io
os
text/tabwriter
github.com/InfluxCommunity/influxdb3-go/v2/influxdb3
定义一个
Query()
函数,该函数执行以下操作使用以下 InfluxDB 凭据参数实例化
influx.Client
Host
:您的 InfluxDB 集群 URLDatabase
:您的 InfluxDB Clustered 数据库的名称Token
:具有对指定数据库读取权限的 数据库令牌。将其存储在密钥存储或环境变量中,以避免暴露原始令牌字符串。
定义一个延迟函数,以便在执行后关闭客户端。
为 SQL 查询定义一个字符串变量。
调用
influxdb3.Client.Query(sql string)
方法,并传递 SQL 字符串来查询 InfluxDB。Query(sql string)
方法返回响应流中数据的iterator
。迭代行,将时间戳格式化为 RFC3339 时间戳,并将数据以表格格式打印到 stdout。
在您的编辑器中,打开您在 数据写入部分 中创建的
main.go
文件,并插入代码以调用Query()
函数 - 例如package main func main() { WriteLineProtocol() Query() }
在您的终端中,输入以下命令以安装必要的包,构建模块并运行程序
go mod tidy && go run influxdb_go_client
该程序执行
main()
函数,该函数写入数据并将查询结果打印到控制台。
本教程假设您已安装 Node.js 和 npm,并按照 数据写入部分 中的描述创建了 influxdb_js_client
npm 项目。
在您的终端或编辑器中,更改为您在 数据写入部分 中创建的
influxdb_js_client
目录。如果您尚未安装,请安装
@influxdata/influxdb3-client
JavaScript 客户端库作为您项目的依赖项npm install --save @influxdata/influxdb3-client
创建一个名为
query.mjs
的文件。.mjs
扩展名告诉 Node.js 解释器您正在使用 ES6 模块语法。在
query.mjs
内部,输入以下示例代码// query.mjs import {InfluxDBClient} from '@influxdata/influxdb3-client' import {tableFromArrays} from 'apache-arrow'; /** * Set InfluxDB credentials. */ const host = "https://cluster-host.com"; const database = 'get-started'; /** * INFLUX_TOKEN is an environment variable you assigned to your * database READ token value. */ const token = process.env.INFLUX_TOKEN; /** * Query InfluxDB with SQL using the JavaScript client library. */ export async function querySQL() { /** * Instantiate an InfluxDBClient */ const client = new InfluxDBClient({host, token}) const sql = ` SELECT * FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z' ` const data = {time: [], room: [], co: [], hum: [], temp: []}; const result = client.query(query, database); for await (const row of result) { data.time.push(new Date(row._time)) data.room.push(row.room) data.co.push(row.co); data.hum.push(row.hum); data.temp.push(row.temp); } console.table([...tableFromArrays(data)]) client.close() }
示例代码执行以下操作
导入以下内容
InfluxDBClient
类tableFromArrays
函数
调用
new InfluxDBClient()
并传递ClientOptions
对象以实例化配置有 InfluxDB 凭据的客户端。host
:您的 InfluxDB 集群 URLtoken
:具有对您要查询的数据库读取权限的 数据库令牌。将其存储在密钥存储或环境变量中,以避免暴露原始令牌字符串。
为 SQL 查询定义一个字符串变量 (
sql
)。定义一个对象 (
data
),其列名作为键,数组值用于存储行数据。使用以下参数调用
InfluxDBClient.query()
方法sql
:要执行的查询database
:要查询的 InfluxDB Clustered 数据库的名称
query()
返回行向量流。迭代行并将列数据添加到
data
中的数组。将
data
传递给 ArrowtableFromArrays()
函数以将数组格式化为表格,然后将结果传递给console.table()
方法以在终端中输出突出显示的表格。
在
index.mjs
(在 数据写入部分 中创建)内部,输入以下示例代码以导入模块并调用函数// index.mjs import { writeLineProtocol } from "./write.mjs"; import { querySQL } from "./query.mjs"; /** * Execute the client functions. */ async function main() { /** Write line protocol data to InfluxDB. */ await writeLineProtocol(); /** Query data from InfluxDB using SQL. */ await querySQL(); } main();
在您的终端中,执行
index.mjs
以写入和查询 InfluxDB Clusterednode index.mjs
在您在 数据写入部分 中创建的
influxdb_csharp_client
目录中,创建一个名为Query.cs
的新文件。在
Query.cs
中,输入以下示例代码// Query.cs using System; using System.Threading.Tasks; using InfluxDB3.Client; using InfluxDB3.Client.Query; namespace InfluxDBv3; public class Query { /** * Queries an InfluxDB database using the C# .NET client * library. **/ public static async Task QuerySQL() { /** INFLUX_TOKEN is an environment variable you assigned to your * database READ token value. **/ string? token = System.Environment .GetEnvironmentVariable("INFLUX_TOKEN"); /** * Instantiate the InfluxDB client with credentials. **/ using var client = new InfluxDBClient( "https://cluster-host.com", token: token, database: database); const string sql = @" SELECT time, room, temp, hum, co FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z' "; Console.WriteLine("{0,-30}{1,-15}{2,-15}{3,-15}{4,-15}", "time", "room", "co", "hum", "temp"); await foreach (var row in client.Query(query: sql)) { { /** * Iterate over rows and print column values in table format. * Format the timestamp as sortable UTC format. */ Console.WriteLine("{0,-30:u}{1,-15}{4,-15}{3,-15}{2,-15}", row[0], row[1], row[2], row[3], row[4]); } } Console.WriteLine(); } }
示例代码执行以下操作
导入以下类
System
System.Threading.Tasks
;InfluxDB3.Client
;InfluxDB3.Client.Query
;
定义一个
Query
类,其中包含一个QuerySQL()
方法,该方法执行以下操作调用
new InfluxDBClient()
构造函数以实例化配置有 InfluxDB 凭据的客户端。host
:您的 InfluxDB 集群 URL。database
:要查询的 InfluxDB Clustered 数据库的名称token
:具有对指定数据库读取权限的 数据库令牌。将其存储在密钥存储或环境变量中,以避免暴露原始令牌字符串。
为 SQL 查询定义一个字符串变量。
调用
InfluxDBClient.Query()
方法以发送带有 SQL 字符串的查询请求。Query()
从响应流返回成批的行,形式为二维数组 - 行数组,其中每一行都是值数组。迭代行并将数据以表格格式打印到 stdout。
在您的编辑器中,打开您在 数据写入部分 中创建的
Program.cs
文件,并插入代码以调用Query()
函数 - 例如// Program.cs using System; using System.Threading.Tasks; namespace InfluxDBv3; public class Program { public static async Task Main() { await Write.WriteLineProtocol(); await Query.QuerySQL(); } }
要构建和执行程序并查询您的 InfluxDB 集群,请在您的终端中输入以下命令
dotnet run
本教程假设使用 Maven 版本 3.9,Java 版本 >= 15,以及在 数据写入部分 中创建的 influxdb_java_client
Maven 项目。
在您的终端或编辑器中,更改为您在 数据写入部分 中创建的
influxdb_java_client
目录。在
src/main/java/com/influxdbv3
目录内部,创建一个名为Query.java
的新文件。在
Query.java
中,输入以下示例代码// Query.java package com.influxdbv3; import com.influxdb.v3.client.InfluxDBClient; import java.util.stream.Stream; /** * Queries an InfluxDB database using the Java client * library. **/ public final class Query { private Query() { //not called } /** * @throws Exception */ public static void querySQL() throws Exception { /** * Query using SQL. */ /** Set InfluxDB credentials. **/ final String host = "https://cluster-host.com"; final String database = "get-started"; /** INFLUX_TOKEN is an environment variable you assigned to your * database READ token value. **/ final char[] token = (System.getenv("INFLUX_TOKEN")). toCharArray(); try (InfluxDBClient client = InfluxDBClient.getInstance(host, token, database)) { String sql = """ SELECT time, room, temp, hum, co FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'"""; String layoutHead = "| %-16s | %-12s | %-6s | %-6s | %-6s |%n"; System.out.printf( "--------------------------------------------------------%n"); System.out.printf(layoutHead, "time", "room", "co", "hum", "temp"); System.out.printf( "--------------------------------------------------------%n"); String layout = "| %-16s | %-12s | %-6s | %.1f | %.1f |%n"; try (Stream<Object[]> stream = client.query(sql)) { stream.forEach(row -> System.out.printf(layout, row[0], row[1], row[4], row[3], row[2]) ); } } } }
示例代码执行以下操作
分配
com.influxdbv3
包名称(Maven groupId)。导入以下类
com.influxdb.v3.client.InfluxDBClient
java.util.stream.Stream
定义一个
Query
类,其中包含一个querySQL()
方法,该方法执行以下操作调用
InfluxDBClient.getInstance()
以实例化配置有 InfluxDB 凭据的客户端。host
:您的 InfluxDB 集群 URLdatabase
:要写入的 InfluxDB Clustered 数据库的名称token
:具有对指定数据库读取权限的 数据库令牌。将其存储在密钥存储或环境变量中,以避免暴露原始令牌字符串。
为 SQL 查询定义一个字符串变量 (
sql
)。为标题和数据行定义 Markdown 表格格式布局。
调用
InfluxDBClient.query()
方法以发送带有 SQL 字符串的查询请求。query()
返回行流。迭代行并将数据以指定的布局打印到 stdout。
在您的编辑器中,打开
src/main/java/com/influxdbv3/App.java
文件,并将内容替换为以下示例代码// App.java package com.influxdbv3; /** * Execute the client functions. * */ public class App { /** * @param args * @throws Exception */ public static void main(final String[] args) throws Exception { // Write data to InfluxDB 3. Write.writeLineProtocol(); // Run the SQL query. Query.querySQL(); } }
App
、Write
和Query
类属于com.influxdbv3
包(您的项目 groupId)。App
定义一个main()
函数,该函数调用Write.writeLineProtocol()
和Query.querySQL()
。
在您的终端或编辑器中,使用 Maven 安装依赖项并编译项目代码 - 例如
mvn compile
为您的环境设置
--add-opens=java.base/java.nio=ALL-UNNAMED
Java 选项。Apache Arrow Flight 库需要此设置才能访问 java.nio API 包。例如,在您的终端中输入以下命令
Linux/MacOS
export MAVEN_OPTS="--add-opens=java.base/java.nio=ALL-UNNAMED"
Windows PowerShell
$env:MAVEN_OPTS="--add-opens=java.base/java.nio=ALL-UNNAMED"
要运行应用程序以写入和查询 InfluxDB Clustered,请执行
App.main()
- 例如,使用 Mavenmvn exec:java -Dexec.mainClass="com.influxdbv3.App"
查询结果
查看查询结果
time | room | co | hum | temp |
---|---|---|---|---|
2022-01-01T08:00:00Z | 厨房 | 0 | 35.9 | 21 |
2022-01-01T09:00:00Z | 厨房 | 0 | 36.2 | 23 |
2022-01-01T10:00:00Z | 厨房 | 0 | 36.1 | 22.7 |
2022-01-01T11:00:00Z | 厨房 | 0 | 36 | 22.4 |
2022-01-01T12:00:00Z | 厨房 | 0 | 36 | 22.5 |
2022-01-01T13:00:00Z | 厨房 | 1 | 36.5 | 22.8 |
2022-01-01T14:00:00Z | 厨房 | 1 | 36.3 | 22.8 |
2022-01-01T15:00:00Z | 厨房 | 3 | 36.2 | 22.7 |
2022-01-01T16:00:00Z | 厨房 | 7 | 36 | 22.4 |
2022-01-01T17:00:00Z | 厨房 | 9 | 36 | 22.7 |
2022-01-01T18:00:00Z | 厨房 | 18 | 36.9 | 23.3 |
2022-01-01T19:00:00Z | 厨房 | 22 | 36.6 | 23.1 |
2022-01-01T20:00:00Z | 厨房 | 26 | 36.5 | 22.7 |
2022-01-01T08:00:00Z | 客厅 | 0 | 35.9 | 21.1 |
2022-01-01T09:00:00Z | 客厅 | 0 | 35.9 | 21.4 |
2022-01-01T10:00:00Z | 客厅 | 0 | 36 | 21.8 |
2022-01-01T11:00:00Z | 客厅 | 0 | 36 | 22.2 |
2022-01-01T12:00:00Z | 客厅 | 0 | 35.9 | 22.2 |
2022-01-01T13:00:00Z | 客厅 | 0 | 36 | 22.4 |
2022-01-01T14:00:00Z | 客厅 | 0 | 36.1 | 22.3 |
2022-01-01T15:00:00Z | 客厅 | 1 | 36.1 | 22.3 |
2022-01-01T16:00:00Z | 客厅 | 4 | 36 | 22.4 |
2022-01-01T17:00:00Z | 客厅 | 5 | 35.9 | 22.6 |
2022-01-01T18:00:00Z | 客厅 | 9 | 36.2 | 22.8 |
2022-01-01T19:00:00Z | 客厅 | 14 | 36.3 | 22.5 |
2022-01-01T20:00:00Z | 客厅 | 17 | 36.4 | 22.2 |
恭喜! 您已经学习了使用 SQL 在 InfluxDB 中查询数据的基本知识。要深入了解查询 InfluxDB Clustered 的所有方法,请参阅文档的 在 InfluxDB 中查询数据 部分。
此页是否对您有帮助?
感谢您的反馈!
支持与反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。要寻求支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。