开始查询数据
- 3 / 3
InfluxDB Cloud Serverless支持多种查询语言
- SQL:由Apache Arrow DataFusion查询引擎提供支持的SQL。支持的SQL语法类似于PostgreSQL。
- InfluxQL:一种类似SQL的查询语言,用于查询存储在InfluxDB中的时间序列数据。
本教程将向您介绍在InfluxDB中查询数据的基础知识,并重点关注使用SQL查询时间序列数据。InfluxDB SQL实现使用Arrow Flight SQL构建,它是一个用于使用Arrow内存格式和Flight RPC框架与SQL数据库交互的协议。它利用了Apache Arrow的性能和SQL的简洁性。
执行查询的工具
InfluxDB Cloud Serverless支持许多不同的查询数据工具,包括
* 本教程涵盖- InfluxDB用户界面(UI)*
influx3
数据CLI*- InfluxDB v3客户端库*
- Flight客户端
- Superset
- Grafana
- 带有InfluxDB v1 HTTP API的InfluxQL
- Chronograf
避免使用/api/v2/query
请勿使用InfluxDB Cloud Serverless中的/api/v2/query
API端点和相关的工具,例如influx query
CLI命令和InfluxDB v2客户端库。
SQL查询基础
InfluxDB Cloud Serverless的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') 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 云无服务器存储桶中的数据
- InfluxDB UI:查看您的模式,使用查询编辑器构建查询,并生成数据可视化。
- InfluxDB v3 客户端库:使用特定于语言的客户端(Python、Go 等)在终端或自定义代码中执行查询。
- influx3 数据 CLI:从终端命令行发送查询。
- Grafana:使用 FlightSQL 数据源插件,查询、连接和可视化数据。
避免使用/api/v2/query
避免在 InfluxDB 云无服务器及其相关工具(如 influx query
CLI 命令和 InfluxDB v2 客户端库)中使用 /api/v2/query
API 端点。您无法使用 SQL 或 InfluxQL 与这些工具一起使用。
对于本示例,使用以下查询选择在 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、组织 和 令牌)由 环境变量 提供。
在浏览器中转到 cloud2.influxdata.com 登录并访问 InfluxDB UI。
在侧边导航菜单中,单击 数据探索器。
数据探索器
在左侧的模式浏览器中,从 存储桶 下拉菜单中选择 get-started 存储桶。显示的度量单位和字段为只读,旨在显示所选存储桶中存储的数据的模式。
在文本编辑器中输入 SQL 查询。
单击 运行。
结果在查询编辑器下方显示。
请参阅 数据探索器中的查询 了解更多信息。
使用 SQL 和 influx3
CLI 查询 InfluxDB v3。
以下步骤包括设置 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 云无服务器集成到您的 Python 代码中。客户端库支持将数据写入 InfluxDB 并使用 SQL 或 InfluxQL 查询数据。
以下步骤包括设置 Python 虚拟环境,已在 开始写入数据 部分中介绍。如果您的项目虚拟环境已经运行,请跳到第 3 步。
在您在写入数据部分创建的
influxdb_py_client
模块目录中打开终端要在您的终端中创建和激活Python虚拟环境,请输入以下命令
python -m venv envs/virtual-env && . ./envs/virtual-env/bin/activate
安装以下依赖项
* 已在写入数据部分中安装
influxdb3-python
*:提供了InfluxDB的influxdb_client_3
Python客户端库模块,并安装了用于处理查询返回的Arrow数据的pyarrow
包。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
:具有对指定bucket 读取访问权限的API token。将其存储在秘密存储或环境变量中,以避免暴露原始token字符串。
定义要执行的SQL查询并将其分配给
query
变量。调用
client.query()
方法并传递SQL查询。query()
将Flight请求发送到InfluxDB,查询数据库(bucket),从端点检索结果数据,然后返回分配给table
变量的pyarrow.Table
。调用
to_pandas()
方法将Arrow表转换为pandas.DataFrame
。调用
pandas.DataFrame.to_markdown()
方法 将 DataFrame 转换为 markdown 表格。调用
print()
方法将 markdown 表格打印到标准输出。在您的终端中,输入以下命令以运行程序并查询 InfluxDB Cloud Serverless
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/apache/arrow/go/v13/arrow" "github.com/InfluxCommunity/influxdb3-go/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 arrow and time packages to format unix timestamp // as a time with timezone layout (RFC3339). time := (row["time"].(arrow.Timestamp)). ToTime(arrow.TimeUnit(arrow.Nanosecond)). 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/apache/arrow/go/v13/arrow
github.com/InfluxCommunity/influxdb3-go/influxdb3
定义一个
Query()
函数,执行以下操作使用 InfluxDB 凭据实例化
influx.Client
。Host
:您的 InfluxDB Cloud Serverless 区域 URLDatabase
:您的 InfluxDB Cloud Serverless 存储桶名称Token
:一个具有对指定存储桶读取权限的 API 令牌。 请将其存储在密钥存储或环境变量中,以避免泄露原始令牌字符串。
定义一个延迟函数,在执行后关闭客户端。
定义一个用于 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-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://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 令牌。 请将其存储在密钥存储或环境变量中,以避免泄露原始令牌字符串。
定义一个用于 SQL 查询的字符串变量(
sql
)。定义一个对象(
data
),以列名为键,以数组值为行数据的存储。使用以下参数调用
InfluxDBClient.query()
方法sql
:要执行的查询database
:要查询的 InfluxDB Cloud Serverless 桶名称
query()
返回一个行向量流。遍历行,将列数据添加到
data
中的数组。将
data
传递给 Arrow 的tableFromArrays()
函数,将数组格式化为表格,然后将结果传递给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 Serverlessnode 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(); } }
示例代码执行以下操作
导入以下类
System
System.Threading.Tasks
;InfluxDB3.Client
;InfluxDB3.Client.Query
;
定义一个具有
QuerySQL()
方法的Query
类,该方法执行以下操作调用
new InfluxDBClient()
构造函数以使用 InfluxDB 凭据配置客户端。host
:您的 InfluxDB Cloud Serverless 区域 URL。token
:一个具有对指定桶读取权限的 API 令牌。将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。database
:要查询的 InfluxDB Cloud Serverless 桶名称
定义一个用于 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 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.InfluxDBClient
java.util.stream.Stream
定义一个具有
querySQL()
方法的Query
类,该方法执行以下操作调用
InfluxDBClient.getInstance()
以使用 InfluxDB 凭据配置客户端。host
:您的 InfluxDB Cloud Serverless 区域 URLdatabase
:要写入的 InfluxDB Cloud Serverless 桶的名称token
:具有对指定bucket 读取访问权限的API token。将其存储在秘密存储或环境变量中,以避免暴露原始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 v3. Write.writeLineProtocol(); // Run the SQL query. Query.querySQL(); } }
- 《App、
Write
和Query
类属于com.influxdbv3
包(您的项目 groupId)。 App
定义了一个main()
函数,该函数调用Write.writeLineProtocol()
和Query.querySQL()
。
- 《App、
在您的终端或编辑器中,使用 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 云无服务器应用程序,请执行
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 云无服务器的查询方式,请参阅文档中的 查询 InfluxDB 数据 部分。
这个页面有帮助吗?
感谢您的反馈!