开始查询数据
- 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 bucket中编写的数据,位于开始编写数据部分。
执行查询的工具
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 Cloud Serverless 区域主机名(不包含https://协议或尾随斜杠)database: 要查询的 InfluxDB Cloud Serverless bucket 的名称token: 一个 API 令牌,具有对指定存储桶的 读取 访问权限。 将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。
定义要执行的SQL查询并将其分配给
query变量。使用 SQL 查询调用
client.query()方法。query()发送一个 Flight 请求到 InfluxDB,查询数据库(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 无服务器区域 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,具有对您要查询的存储桶的 读取 权限。将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。
定义一个字符串变量 (
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 无服务器区域 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 token,具有对指定存储桶的 读取 访问权限。 将其存储在秘密存储或环境变量中,以避免暴露原始 token 字符串。
定义一个字符串变量 (
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 |
恭喜! 你已经学习了在 InfluxDB 中使用 SQL 查询数据的基础知识。要深入了解您可以查询 InfluxDB Cloud Serverless 的所有方式,请参阅文档中的 在 InfluxDB 中查询数据 部分。