SQL 选择器函数旨在处理时间序列数据。它们的功能类似于聚合函数,接收一组数据并返回单个值。然而,选择器函数的独特之处在于它们返回一个包含**时间值**以及计算值的结构体。
选择器函数如何工作?
每个选择器函数都返回一个 Arrow 结构体(类似于 JSON 对象),该对象代表了在每个分组中指定列的单个时间和值。返回什么时间和值取决于选择器函数的逻辑。例如,selector_first 返回组中第一行的指定列的值。selector_max 返回组中指定列的最大值。
选择器结构体架构
从选择器函数返回的结构体有两个属性
- time:所选行的
time 值 - value:所选行中指定列的值
{time: 2023-01-01T00:00:00Z, value: 72.1}
选择器函数的使用
在 SELECT 语句中,执行一个选择器函数,并使用方括号表示法引用返回的结构体的属性来填充列值
SELECT
selector_first(temp, time)['time'] AS time,
selector_first(temp, time)['value'] AS temp,
room
FROM home
GROUP BY room
选择器函数
selector_min
返回所选列的最小值和时间戳。
selector_min(expression, timestamp)
参数
- expression:要操作的表达式。可以是常量、列或函数,以及字符串或算术运算符的任意组合。
- timestamp:时间表达式。可以是常量、列或函数。
查看 selector_min 查询示例
以下示例使用 NOAA Bay Area 天气样本数据。
SELECT
location,
selector_min(temp_min, time)['time'] AS time,
selector_min(temp_min, time)['value'] AS min_temp
FROM
weather
GROUP BY
location
| location | time | min_temp | +—————+———————+———-+ | Concord | 2022-01-02T00:00:00 | 28.0 | | Hayward | 2021-01-26T00:00:00 | 32.0 | | San Francisco | 2022-01-02T00:00:00 | 35.0 |
selector_max
返回所选列的最大值和时间戳。
selector_max(expression, timestamp)
参数
- expression:要操作的表达式。可以是常量、列或函数,以及字符串或算术运算符的任意组合。
- timestamp:时间表达式。可以是常量、列或函数。
查看 selector_max 查询示例
以下示例使用 NOAA Bay Area 天气样本数据。
SELECT
location,
selector_max(temp_max, time)['time'] AS time,
selector_max(temp_max, time)['value'] AS max_temp
FROM
weather
GROUP BY
location
| location | time | max_temp |
|---|
| Concord | 2020-09-07T00:00:00 | 112.0 |
| Hayward | 2022-09-06T00:00:00 | 107.0 |
| San Francisco | 2020-09-06T00:00:00 | 102.0 |
selector_first
返回按时间升序排序的第一个值。
selector_first(expression, timestamp)
参数
- expression:要操作的表达式。可以是常量、列或函数,以及字符串或算术运算符的任意组合。
- timestamp:时间表达式。可以是常量、列或函数。
查看 selector_first 查询示例
以下示例使用 NOAA Bay Area 天气样本数据。
SELECT
location,
selector_first(precip, time)['time'] AS time,
selector_first(precip, time)['value'] AS first_precip
FROM
(SELECT * FROM weather WHERE precip > 0)
GROUP BY
location
| location | time | first_precip |
|---|
| Concord | 2020-01-08T00:00:00 | 0.01 |
| Hayward | 2020-01-09T00:00:00 | 0.17 |
| San Francisco | 2020-01-07T00:00:00 | 0.03 |
selector_last
返回按时间升序排序的最后一个值。
selector_last(expression, timestamp)
参数
- expression:要操作的表达式。可以是常量、列或函数,以及字符串或算术运算符的任意组合。
- timestamp:时间表达式。可以是常量、列或函数。
查看 selector_last 查询示例
以下示例使用 NOAA Bay Area 天气样本数据。
SELECT
location,
selector_last(precip, time)['time'] AS time,
selector_last(precip, time)['value'] AS last_precip
FROM
(SELECT * FROM weather WHERE precip > 0)
GROUP BY
location
| location | time | last_precip |
|---|
| Concord | 2022-12-31T00:00:00 | 3.04 |
| Hayward | 2022-12-31T00:00:00 | 4.34 |
| San Francisco | 2022-12-31T00:00:00 | 3.67 |
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。