开始查询数据
- 3 / 3
InfluxDB 集群支持多种查询语言:
- 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 集群支持多种不同的工具来查询数据,包括:
* Covered in this tutorialinfluxctl命令行工具*influx3数据 CLI*- InfluxDB 3 客户端库*
- 航班客户
- 超集
- Grafana
- 使用InfluxDB v1 HTTP API的InfluxQL
- Chronograf
/api/v2/query 不支持
/api/v2/query API 端点和相关工具,如 influx CLI 和 InfluxDB v2 客户端库,不支持 在 InfluxDB 集群中。
SQL 查询基础
InfluxDB 集群 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'::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集群数据库中的数据:
influxctl命令行工具: 使用influxctl命令行工具从您的命令行查询数据。influx3CLI: 使用基于Python的influx3CLI从终端命令行查询数据。- InfluxDB 3 客户端库:使用特定语言(Python、Go 等)的客户端在您的终端或自定义代码中执行查询。
- Grafana: 使用FlightSQL数据源插件来查询、连接和可视化数据。
对于这个例子,使用以下查询选择在 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 和 token) 是通过 环境变量 提供的。
使用influxctl query 命令 查询您
InfluxDB 集群中的家庭传感器样本数据。
提供以下内容:
- 使用
--database标志查询的数据库名称 - 使用
--token标志的数据库令牌(使用在 入门–设置 InfluxDB 集群 中创建的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'"
使用存储的凭据查询
可选地,您可以在您的 influxctl 连接配置文件 中配置 database 和 token 查询凭据。
命令行标志 --database 和 --token 会覆盖您配置文件中的凭据。
使用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也会安装用于处理从查询返回的 Arrow 数据的pyarrow库。创建
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 集群与您的 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"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=选项与证书路径,例如: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集群数据库的名称
定义要执行的SQL查询并将其分配给
query变量。使用SQL查询调用
client.query()方法。query()向InfluxDB发送Flight请求,查询数据库,从端点检索结果数据,然后将其返回为pyarrow.Table分配给table变量。调用
to_pandas()方法将 Arrow 表转换为pandas.DataFrame。调用
pandas.DataFrame.to_markdown()方法将DataFrame转换为markdown表格。调用
print()方法将markdown表打印到标准输出。输入以下命令来运行程序并查询您的 InfluxDB 集群:
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 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 }示例代码完成以下操作:
导入以下包:
contextfmtioostext/tabwritergithub.com/InfluxCommunity/influxdb3-go/v2/influxdb3
定义一个
Query()函数,它执行以下操作:用以下参数实例化
influx.Client以获取 InfluxDB 凭据:Host: 您的InfluxDB集群URLDatabase: 你的InfluxDB集群数据库的名称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://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集群数据库的名称
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 集群: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 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(); } }示例代码完成以下操作:
导入以下类:
SystemSystem.Threading.Tasks;InfluxDB3.Client;InfluxDB3.Client.Query;
定义了一个
Query类,其中包含一个QuerySQL()方法,该方法执行以下操作:调用
new InfluxDBClient()构造函数来实例化一个配置了 InfluxDB 凭证的客户端。host: 你的 InfluxDB 集群 URL。database: 要查询的InfluxDB集群数据库的名称token: 一个数据库令牌,具有对指定数据库的读权限。 将其存储在秘密存储或环境变量中,以避免暴露原始令牌字符串。
为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集群,请在终端中输入以下命令:
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.InfluxDBClientjava.util.stream.Stream
定义一个
Query类,其中包含一个querySQL()方法,其功能如下:调用
InfluxDBClient.getInstance()来实例化一个配置了 InfluxDB 凭据的客户端。host: 你的 InfluxDB 集群 URLdatabase: 要写入的InfluxDB集群数据库的名称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 包。例如,在终端中输入以下命令:
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()- 例如,使用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 Clustered的所有方式,请参阅 在InfluxDB中查询数据文档部分。