开始查询数据
- 3 / 3
InfluxDB Cloud Serverless 支持多种查询语言:
- SQL: 由Apache Arrow DataFusion查询引擎支持的传统SQL。支持的SQL语法类似于PostgreSQL。
- InfluxQL: 一种类似SQL的查询语言,用于查询存储在InfluxDB中的时间序列数据。
本教程将引导您了解在InfluxDB中查询数据的基本知识,并重点介绍使用SQL查询您的时间序列数据。InfluxDB SQL实现是基于Arrow Flight SQL构建的,这是一种使用Arrow内存格式与SQL数据库交互的协议,以及Flight RPC框架。它利用了Apache Arrow的性能和SQL的简单性。
本教程本节中的示例查询get-started 存储桶中写入的数据,位于开始编写数据部分。
执行查询的工具
InfluxDB Cloud Serverless 支持多种不同的工具来查询数据,包括:
* Covered in this tutorial- InfluxDB 用户界面 (UI)*
influx3数据 CLI*- InfluxDB 3 客户端库*
- 航班客户
- 超集
- Grafana
- 使用InfluxDB v1 HTTP API的InfluxQL
- Chronograf
避免使用 /api/v2/query
避免使用 /api/v2/query API 端点及相关工具,例如 influx query CLI 命令和 InfluxDB v2 客户端库,配合 InfluxDB Cloud Serverless。
SQL 查询基础
InfluxDB Cloud 无服务器 SQL 实现由 Apache Arrow DataFusion 查询引擎提供支持,该引擎提供与 PostgreSQL 类似的 SQL 语法。
这是关于为InfluxDB编写SQL查询的简要介绍。有关更深入的细节,请参见 使用SQL查询数据。
InfluxDB SQL 查询最常见的包括以下几个部分:
* Required- *
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') 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 Cloud Serverless 存储桶中的数据:
- InfluxDB UI: 查看您的架构,使用查询编辑器构建查询,并生成数据可视化。
- InfluxDB 3 客户端库:使用特定语言(Python、Go 等)的客户端在终端或自定义代码中执行查询。
- influx3 数据 CLI: 从你的终端命令行发送查询。
- Grafana: 使用FlightSQL数据源插件进行查询、连接和可视化数据。
避免使用 /api/v2/query
避免在 InfluxDB Cloud Serverless 及相关工具中使用 /api/v2/query API 端点,例如 influx query CLI 命令和 InfluxDB v2 客户端库。您无法在这些工具中使用 SQL 或 InfluxQL。
在此示例中,使用以下查询选择在 get-started 存储桶中写入的所有数据,时间范围为 2022-01-01T08:00:00Z 和 2022-01-01T20:00:00Z。
SELECT
*
FROM
home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
本入门教程中的一些示例假设您的 InfluxDB 凭据(URL、organization 和 token)是通过 环境变量 提供的。
在浏览器中访问 cloud2.influxdata.com 登录并访问 InfluxDB 用户界面。
在侧边导航菜单中,点击 数据探索器。
数据探索者
在左侧的模式浏览器中,从bucket下拉菜单中选择get-started桶。 显示的测量值和字段是只读的,旨在向您展示存储在所选桶中的数据的模式。
在文本编辑器中输入SQL查询。
点击 运行.
结果显示在查询编辑器下。
请查看 数据探索器中的查询 以了解更多信息。
使用 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 create \ --name="config-serverless" \ --database="get-started" \ --host="cloud2.influxdata.com" \ --token="API_TOKEN" \ --org="ORG_ID"替换以下内容:
输入
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 Cloud Serverless与您的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_3Python 客户端库模块,并且还安装了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"cloud2.influxdata.com", token=f"API_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"cloud2.influxdata.com", token=f"API_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云无服务器区域主机名 (不包括https://协议或末尾斜杠)database: 要查询的InfluxDB Cloud Serverless bucket的名称token: 一个API令牌,具有对指定存储桶的读取权限。将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。
定义要执行的SQL查询并将其分配给
query变量。使用 SQL 查询调用
client.query()方法。query()向 InfluxDB 发送一个 Flight 请求,查询数据库(bucket),从端点获取结果数据,然后返回一个pyarrow.Table分配给table变量。调用
to_pandas()方法将Arrow表转换为pandas.DataFrame。调用
pandas.DataFrame.to_markdown()方法将数据框转换为markdown表格。调用
print()方法将markdown表格打印到stdout。在您的终端中,输入以下命令以运行程序并查询 InfluxDB Cloud Serverless:
python query.py
查看返回的 markdown 表格
| 浓度 | 湿度 | 房间 | 温度 | 时间 | |
|---|---|---|---|---|---|
| 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 API read token. token := os.Getenv("INFLUX_TOKEN") // Instantiate the client. client, err := influxdb3.New(influxdb3.ClientConfig{ Host: "https://cloud2.influxdata.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 }示例代码完成以下操作:
导入以下包:
contextfmtioostext/tabwritergithub.com/InfluxCommunity/influxdb3-go/v2/influxdb3
定义一个
Query()函数,它执行以下操作:使用 InfluxDB 凭据实例化
influx.Client。Host: 您的 InfluxDB Cloud Serverless 区域 URLDatabase: 您的 InfluxDB Cloud Serverless 存储桶的名称Token: 一个 API token,具有对指定存储桶的读取权限。 将其存储在秘密存储或环境变量中,以避免 暴露原始令牌字符串。
定义了一个延迟函数,在执行后关闭客户端。
为SQL查询定义一个字符串变量。
调用
influxdb3.Client.Query(sql string)方法并传递 SQL 字符串以查询 InfluxDB。
Query(sql string)方法返回一个iterator用于响应流中的数据。遍历行,将时间戳格式化为RFC3339 时间戳,并以表格格式打印数据到标准输出。
在您的编辑器中,打开您在写入数据部分中创建的
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-clientJavaScript 客户端库作为项目的依赖: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://cloud2.influxdata.com"; const database = 'get-started'; /** * INFLUX_TOKEN is an environment variable you assigned to your * API 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 Cloud Serverless 区域 URLtoken: 一个 API token 具有对您想要查询的存储桶的 读取 权限。 将此存储在秘密存储或环境变量中,以避免暴露原始的token字符串。
定义一个字符串变量 (
sql) 用于 SQL 查询。定义一个对象 (
data),其列名称作为键,数组值用于存储行数据。使用以下参数调用
InfluxDBClient.query()方法:sql: 要执行的查询database: 要查询的 InfluxDB Cloud Serverless 桶的名称
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 Cloud Serverless:node 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 (bucket) using the C# .NET client * library. **/ public static async Task QuerySQL() { /** INFLUX_TOKEN is an environment variable you assigned to your * API READ token value. **/ string? token = System.Environment .GetEnvironmentVariable("INFLUX_TOKEN"); /** * Instantiate the InfluxDB client with credentials. **/ using var client = new InfluxDBClient( "https://cloud2.influxdata.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(); } }示例代码完成以下操作:
导入以下类:
SystemSystem.Threading.Tasks;InfluxDB3.Client;InfluxDB3.Client.Query;
定义一个
Query类,其中包含一个QuerySQL()方法,该方法执行以下操作:调用
new InfluxDBClient()构造函数来实例化一个配置了 InfluxDB 凭证的客户端。host: 您的 InfluxDB Cloud Serverless 区域 URL。token: 一个带有读取权限的 API 令牌,用于指定的存储桶。将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。database: 要查询的 InfluxDB Cloud Serverless 桶的名称
为SQL查询定义一个字符串变量。
调用
InfluxDBClient.Query()方法发送带有 SQL 字符串的查询请求。Query()从响应流返回一批批的行,作为一个二维数组——一个行的数组,其中每行都是一个值的数组。遍历行并将数据以表格格式打印到标准输出。
在您的编辑器中,打开您在写入数据部分中创建的
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 Cloud Serverless,请在终端中输入以下命令:
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 (bucket) 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://cloud2.influxdata.com"; final String database = "get-started"; /** INFLUX_TOKEN is an environment variable you assigned to your * API 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.InfluxDBClientjava.util.stream.Stream
定义一个
Query类,包含一个querySQL()方法,该方法执行以下操作:调用
InfluxDBClient.getInstance()来实例化一个配置了 InfluxDB 凭据的客户端。host: 您的 InfluxDB Cloud Serverless 区域 URLdatabase: 要写入的InfluxDB Cloud Serverless桶的名称token: 一个 API 令牌,具有对指定存储桶的 读取 权限。 将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。
定义一个字符串变量 (
sql) 用于 SQL 查询。定义了一个用于标题和数据行的Markdown表格格式布局。
调用
InfluxDBClient.query()方法发送带有 SQL 字符串的查询请求。query()返回一系列行。遍历行并以指定的布局将数据打印到标准输出。
在您的编辑器中,打开
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-UNNAMEDJava 选项。 Apache Arrow Flight 库需要此设置以访问 java.nio API package。例如,在您的终端中输入以下命令:
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 Cloud Serverless,请执行
App.main()—例如,使用 Maven:mvn exec:java -Dexec.mainClass="com.influxdbv3.App"
查询结果
查看查询结果
| 时间 | 房间 | 二氧化碳 | 湿度 | 温度 |
|---|---|---|---|---|
| 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 Cloud Serverless的方法,请参阅文档中的 在InfluxDB中查询数据 部分。