使用 SQL 查询数据
学习如何使用 SQL 在 InfluxDB 3 Core 中查询数据。
使用 SQL 探索您的模式
使用 SQL 探索您的 InfluxDB 3 Core 数据库中的数据模式。
列出表
SHOW TABLES列出表中的列
SHOW COLUMNS IN table执行基本 SQL 查询
查询 InfluxDB 3 Core 数据最基本的 SQL 查询通常包含 SELECT、FROM 和 WHERE 子句。
SELECT temp, room FROM home WHERE time >= now() - INTERVAL '1 day'使用 SQL 聚合数据
使用聚合和选择器函数对时间序列数据执行聚合操作。
按组聚合字段
SELECT
mean(field1) AS mean,
selector_first(field2)['value'] as first,
tag1
FROM home
GROUP BY tag按时间间隔聚合
SELECT
DATE_BIN(INTERVAL '1 hour', time, '2022-01-01T00:00:00Z'::TIMESTAMP) AS time,
mean(field1),
sum(field2),
tag1
FROM home
GROUP BY 1, tag1将值转换为不同类型
使用 CAST 函数或双冒号 :: 强制类型转换简写语法将值转换为特定类型。
-- CAST clause
SELECT CAST(1234.5 AS BIGINT)
-- Double-colon casting shorthand
SELECT 1234.5::BIGINT在 SQL 查询中比较值
使用 SQL 窗口函数在时间序列数据的不同行之间比较值。了解如何计算差值、百分比变化以及比较特定时间间隔的值。
计算与前一个值的差值
SELECT
time,
room,
temp,
temp - LAG(temp) OVER (
PARTITION BY room
ORDER BY time
) AS temp_change
FROM home
ORDER BY room, time填充数据缺失
使用 date_bin_gapfill 结合 interpolate 或 locf 来填充未返回数据的空白时间。
SELECT
date_bin_gapfill(INTERVAL '30 minutes', time) as time,
room,
interpolate(avg(temp))
FROM home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T10:00:00Z'
GROUP BY 1, room使用参数化 SQL 查询
使用参数化查询可防止注入攻击并使查询更具可重用性。
使用 Go 和 influxdb3-go 客户端
// Use the $parameter syntax to reference parameters in a query.
// The following SQL query contains $room and $min_temp placeholders.
query := `
SELECT * FROM home
WHERE time >= $min_time
AND temp >= $min_temp
AND room = $room`
// Assign parameter names to input values.
parameters := influxdb3.QueryParameters{
"room": "Kitchen",
"min_temp": 20.0,
"min_time": "2024-03-18 00:00:00.00",
}
// Call the client's function to query InfluxDB with parameters.
iterator, err := client.QueryWithParameters(context.Background(), query, parameters)此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。