使用 SQL 查询数据
学习如何使用 SQL 查询 InfluxDB 中存储的数据。
使用 SQL 探索您的模式
在使用 InfluxDB 的 SQL 实现时,一个 测量 被结构化为一个表,而 时间、字段 和 标签 被结构化为列。
列出测量
SHOW TABLES
列出测量中的列
SHOW COLUMNS IN measurement
执行基本的 SQL 查询
一个基本的 SQL 查询通常包括 SELECT
、FROM
和 WHERE
子句,用于从 InfluxDB 查询数据。
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
填充数据中的空缺
使用 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 _time, 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)
这个页面有帮助吗?
感谢您的反馈!