Appearance
时间相关函数
以下所有的函数
表达式中参数说明:
expr :表达式
columnName :字段名
datediff
计算日期 startTime 到 endTime 之间相差的天数
语法
sql
datediff(startTime: expr | columnName, endTime: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT datediff("2021-01-01", "2021-01-02")
┌─datediff("2021-01-01", "2021-01-02")───────────────────────┐
│ -1 │
└────────────────────────────────────────────────────────────┘time_like
时间 like 模糊匹配 true返回1,false返回0
语法
sql
time_like(timestr: expr | columnName, pattern: expr)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_like("2021-11-01", "%11-0%")
┌─time_like("2021-11-01", "%11-0%")───────────────────────┐
│ 1 │
└─────────────────────────────────────────────────────────┘time_equal
判断 timestr1 和 timestr2 是否相等 true返回1,false返回0
语法
sql
time_equal(timestr1: expr | columnName, timestr2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_equal("2021-11-01", "2021-11-02")
┌─time_equal("2021-11-01", "2021-11-02")──────┐
│ 0 │
└─────────────────────────────────────────────┘time_not_equal
判断 timestr1 和 timestr2 是否不相等 true返回1,false返回0
语法
sql
time_not_equal(timestr1: expr | columnName, timestr2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_not_equal("2021-11-01", "2021-11-02")
┌─time_not_equal("2021-11-01", "2021-11-02")──────┐
│ 1 │
└─────────────────────────────────────────────────┘time_greater
判断 timestr1 是否大于 timestr2 true返回1,false返回0
语法
sql
time_greater(timestr1: expr | columnName, timestr2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_greater("2021-11-01", "2021-11-02")
┌─time_greater("2021-11-01", "2021-11-02")────────┐
│ 0 │
└─────────────────────────────────────────────────┘time_greater_equal
判断 timestr1 是否大于等于 timestr2 true返回1,false返回0
语法
sql
time_greater_equal(timestr1: expr | columnName, timestr2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_greater_equal("2021-11-01", "2021-11-02")
┌─time_greater_equal("2021-11-01", "2021-11-02")──────┐
│ 0 │
└─────────────────────────────────────────────────────┘time_less
判断 timestr1 是否小于 timestr2 true返回1,false返回0
语法
sql
time_less(timestr1: expr | columnName, timestr2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_less("2021-11-01", "2021-11-02")
┌─time_less("2021-11-01", "2021-11-02")───────────┐
│ 1 │
└─────────────────────────────────────────────────┘time_less_equal
判断 timestr1 是否小于等于 timestr2 true返回1,false返回0
语法
sql
time_less_equal(timestr1: expr | columnName, timestr2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_less_equal("2021-11-01", "2021-11-02")
┌─time_less_equal("2021-11-01", "2021-11-02")────────────┐
│ 1 │
└────────────────────────────────────────────────────────┘time_between
判断 timestr1 是否在 timestr2 和 timestr3 之间 true返回1,false返回0
语法
sql
time_between(timestr1: expr | columnName, timestr2: expr | columnName, timestr3: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_between("2021-11-01", "2021-10-01", "2021-12-01")
┌─time_between("2021-11-01", "2021-10-01", "2021-12-01")──────────┐
│ 1 │
└─────────────────────────────────────────────────────────────────┘time_between_equal
判断 timestr1 是否在 timestr2 和 timestr3 之间或相等 true返回1,false返回0
语法
sql
time_between_equal(timestr1: expr | columnName, timestr2: expr | columnName, timestr3: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型
示例
sql
> SELECT time_between_equal("2021-11-01", "2021-10-01", "2021-12-01")
┌─time_between_equal("2021-11-01", "2021-10-01", "2021-12-01")────┐
│ 1 │
└─────────────────────────────────────────────────────────────────┘time_add
返回 t1 加上 t2 之后的时间,当 t2 为整数时,视为秒,当 t2 为 String 时,有数值和单位组成,如 10s
可选单位有 d(天), h(小时), m(分钟), ms(毫秒), s(秒)
语法
sql
time_add(t1: expr | columnName, t2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回字符类型的数值
示例
sql
> SELECT time_add("2021-10-01T00:00:00Z", "10m")
┌─time_add("2021-10-01T00:00:00Z", "10m")──────────┐
│ 2021-10-01T00:10:00Z │
└──────────────────────────────────────────────────┘sql
> SELECT time_add("2021-10-01T00:00:00Z", 100)
┌─time_add("2021-10-01T00:00:00Z", 100)────────────┐
│ 2021-10-01T00:01:40Z │
└──────────────────────────────────────────────────┘time_minus
返回 t1 减去 t2 之后的时间,t2 的值可参考 time_add 函数
语法
sql
time_minus(t1: expr | columnName, t2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回字符类型的数值
示例
sql
> SELECT time_minus("2021-10-01T00:00:00Z", "10m")
┌─time_minus("2021-10-01T00:00:00Z", "10m")────────┐
│ 2021-09-30T00:50:00Z │
└──────────────────────────────────────────────────┘curdate/current_date
返回当前时间的日期部分
语法
sql
curdate/current_date()参数
无参数
返回值
- 返回字符类型的数值
示例
sql
> SELECT curdate()
> SELECT current_date()
┌─curdate/current_date()─────────────────┐
│ 2021-10-01 │
└────────────────────────────────────────┘current_time/curtime
返回当前时间的时间部分
语法
sql
current_time/curtime()参数
无参数
返回值
- 返回字符类型的数值
示例
sql
> SELECT current_time()
> SELECT curtime()
┌─current_time/curtime()───────────────┐
│ 15:01:02 │
└──────────────────────────────────────┘current_timestamp
返回当前时间
语法
sql
current_timestamp()参数
无参数
返回值
- 返回 DateTime 类型的数值
示例
sql
> SELECT current_timestamp()
┌─current_timestamp()──────────────────────────────────┐
│ 2021-01-01T00:00:00.742Z │
└──────────────────────────────────────────────────────┘to_unixtime
将 t 转为 unix timestamp
语法
sql
to_unixtime(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT to_unixtime("1970-01-01T08:00:01Z")
┌─to_unixtime("1970-01-01T08:00:01Z")─────────────────────┐
│ 28801 │
└─────────────────────────────────────────────────────────┘date
获取 t 的日期部分
语法
sql
date(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回字符类型的数值
示例
sql
> SELECT date("2021-10-01T00:00:00Z")
┌─date("2021-10-01T00:00:00Z")───────────┐
│ 2021-10-01 │
└────────────────────────────────────────┘sql
> SELECT date(1)
┌─date(1)─────────────────────┐
│ 1970-01-01 │
└─────────────────────────────┘year
获取 t 的年份
语法
sql
year(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT month("2021-10-01T00:00:00Z")
┌─month("2021-10-01T00:00:00Z")──────────┐
│ 2021 │
└────────────────────────────────────────┘month
获取 t 的月份
语法
sql
month(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT month("2021-10-01T00:00:00Z")
┌─month("2021-10-01T00:00:00Z")─────────┐
│ 10 │
└───────────────────────────────────────┘day/dayofmonth
获取 t 在日期部分
语法
sql
day/dayofmonth(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT day("2021-10-23T00:00:00Z")
> SELECT dayofmonth("2021-10-23T00:00:00Z")
┌─day/dayofmonth("2021-10-23T00:00:00Z")─────────────────────┐
│ 23 │
└────────────────────────────────────────────────────────────┘hour
获取 t 的小时部分
语法
sql
hour(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT hour("2021-10-01T10:00:00Z")
┌─hour("2021-10-01T10:00:00Z")─────────────────────┐
│ 10 │
└──────────────────────────────────────────────────┘minute
获取 t 的分钟部分
语法
sql
minute(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT minute("2021-10-01T00:20:00Z")
┌─minute("2021-10-01T00:20:00Z")─────────────────────┐
│ 20 │
└────────────────────────────────────────────────────┘second
获取 t 的秒
语法
sql
second(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT second("2021-10-01T00:20:30Z")
┌─second("2021-10-01T00:20:30Z")─────────┐
│ 30 │
└────────────────────────────────────────┘dayname
返回 t 是星期几,周日到周六分别为 Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
语法
sql
dayname(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回字符类型的数值
示例
sql
> SELECT dayname("2021-10-01T00:00:00Z")
┌─dayname("2021-10-01T00:00:00Z")───────────────────┐
│ Friday │
└───────────────────────────────────────────────────┘dayofweek
获取 t 是一周的第几天
语法
sql
dayofweek(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT dayofweek("2021-06-10T00:00:00Z")
┌─dayofweek("2021-06-10T00:00:00Z")─────────────────────┐
│ 5 │
└───────────────────────────────────────────────────────┘dayofyear
获取 t 是一年中的第几天
语法
sql
dayofyear(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT dayofyear("2021-01-04T00:00:00Z")
┌─dayofyear("2021-01-04T00:00:00Z")─────────────────────┐
│ 4 │
└───────────────────────────────────────────────────────┘sql
> SELECT dayofyear("2020-02-29T00:00:00Z")
┌─dayofyear("2020-02-29T00:00:00Z")─────────────────────┐
│ 60 │
└───────────────────────────────────────────────────────┘from_days
将数值 d 转为日期,如果 d 小于 365,将返回 "0000-00-00"
语法
sql
from_days(d: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT from_days(36500)
┌─from_days(36500)─────────────────────┐
│ 0099-12-07 │
└──────────────────────────────────────┘to_days
获取 t 距离 0000-00-00 的天数
语法
sql
to_days(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT to_days("2007-10-07T00:00:00Z")
┌─to_days("2007-10-07T00:00:00Z")────┐
│ 733321 │
└────────────────────────────────────┘from_unixtime
将 ts unix 时间戳转为时间
语法
sql
from_unixtime(ts: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 DateTime 类型的数值
示例
sql
> SELECT from_unixtime(1623226634)
┌─from_unixtime(1623226634)───────────────────────┐
│ 2021-06-09T16:17:14Z │
└─────────────────────────────────────────────────┘now/localtime/localtimestamp/sysdate
返回当前时间
语法
sql
now/localtime/localtimestamp/sysdate()参数
无参数
返回值
- 返回 DateTime 类型的数值
示例
sql
> SELECT now()
> SELECT localtime()
> SELECT localtimestamp()
> SELECT sysdate()
┌─now/localtime/localtimestamp/sysdate()───────────┐
│ 2021-10-01T15:04:05Z │
└──────────────────────────────────────────────────┘makedate/make_date
根据年份 y 及一年中的第几天 doy 创建一个日期
语法
sql
makedate(y: expr | columnName, doy: expr | columnName)
make_date(y: expr | columnName, doy: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT make_date(2023, 30)
> SELECT makedate(2023, 30)
┌─make_date/makedate(2023, 30)───────────┐
│ 2023-01-30 │
└────────────────────────────────────────┘maketime
根据小时 h,分钟 m 和秒值 s 创建并返回时间值
语法
sql
maketime(h: expr | columnName, m: expr | columnName, s: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT maketime(16, 20, 59)
┌─maketime(16, 20, 59)─────────────────┐
│ 16:20:59 │
└──────────────────────────────────────┘monthname
返回 t 的月份的英文名,一月到十二月分别为 January, February, March, April, May, June, July, August, September, October, November, December
语法
sql
monthname(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT monthname("2021-01-01T00:00:00Z")
┌─monthname(2021-01-01T00:00:00Z)───────────┐
│ January │
└───────────────────────────────────────────┘sec_to_time
根据秒数 s 返回时间部分
语法
sql
sec_to_time(s: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT sec_to_time(1234)
┌─sec_to_time(1234)─────────────────────┐
│ 00:20:34 │
└───────────────────────────────────────┘time
获取 t 的时间部分
语法
sql
time(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT time("2021-10-01T15:04:05Z")
┌─time(2021-10-01T15:04:05Z)───────────┐
│ 15:04:05 │
└──────────────────────────────────────┘time_to_sec
将 t 的时间部分转为秒
语法
sql
time_to_sec(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT time_to_sec("10:20:30")
┌─time_to_sec("10:20:30")───────────────────┐
│ 37230 │
└───────────────────────────────────────────┘timediff
返回 t1 和 t2 的差异部分
语法
sql
timediff(t1: expr | columnName, t2: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT timediff("2000-01-01T00:00:00Z", "2021-06-09T00:00:00Z")
┌─timediff("2000-01-01T00:00:00Z, 2021-06-09T00:00:00Z")──────┐
│ -187920:00:00 │
└─────────────────────────────────────────────────────────────┘utc_date
获取当前 UTC 时间的日期部分
语法
sql
utc_date()参数
无参数
返回值
- 返回 String 类型的数值
示例
sql
> SELECT utc_date()
┌─utc_date()──────────────────┐
│ 2021-10-01 │
└─────────────────────────────┘utc_time
获取当前 UTC 时间的时间部分
语法
sql
utc_time()参数
无参数
返回值
- 返回 String 类型的数值
示例
sql
> SELECT utc_time()
┌─utc_time()─────────────────────┐
│ 15:04:05 │
└────────────────────────────────┘utc_timestamp
获取当前 UTC 时间
语法
sql
utc_timestamp()参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 DateTime 类型的数值
示例
sql
> SELECT utc_timestamp()
┌─utc_timestamp()───────────────────────┐
│ 2021-10-01T15:04:05Z │
└───────────────────────────────────────┘week
返回 t 的在一年中周数
语法
sql
week(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT week("2021-02-20T00:00:00Z")
┌─week("2021-02-20T00:00:00Z")─────────────────────┐
│ 7 │
└──────────────────────────────────────────────────┘yearweek
返回 t 的年份及周数
语法
sql
yearweek(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT yearweek("2021-10-01T00:00:00Z")
┌─yearweek("2021-10-01T00:00:00Z")─────────────────────┐
│ 202139 │
└──────────────────────────────────────────────────────┘quarter
返回 t 是第几季度
语法
sql
quarter(t: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT quarter("2021-10-01T00:00:00Z")
┌─quarter("2021-10-01T00:00:00Z")─────────────────────┐
│ 4 │
└─────────────────────────────────────────────────────┘unix_timestamp
返回 unix 时间戳,如果传入参数 t,则返回 t 的 unix 时间戳
语法
sql
unix_timestamp([t: expr | columnName])参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int64 类型的数值
示例
sql
> SELECT unix_timestamp()
┌─unix_timestamp()───────────────────────┐
│ 1603041230 │
└────────────────────────────────────────┘sql
> SELECT unix_timestamp("1970-01-01T00:00:01Z")
┌─unix_timestamp("1970-01-01T00:00:01Z")─────────────────────┐
│ 1 │
└────────────────────────────────────────────────────────────┘strftime
将时间 tm 转为 layout 格式的字符串
layout 支持的符号如下:
| 符号 | 意义 | 介绍 | 示例 |
|---|---|---|---|
| G | 纪元 | text | AD |
| C | 纪元世纪 (>=0) | number | 20 |
| Y | 纪年 (>=0) | year | 1996 |
| x | 周年 | year | 1996 |
| w | 周年中的周数 | number | 27 |
| e | 星期几 | number | 2 |
| E | 星期几 | text | Tuesday; Tue |
| y | 年份 | year | 1996 |
| D | 一年的第几天 | number | 189 |
| M | 一年的第几个月 | month | July; Jul; 07 |
| d | 一个月的第几天 | number | 10 |
| a | 一天中的半天 | text | PM |
| K | 12 小时制的小时数 | number | 0 |
| h | 12 小时制的小时数 | number | 12 |
| H | 24 小时制的小时数 | number | 0 |
| k | 24 小时制的小时数 | number | 24 |
| m | 分钟数 | number | 30 |
| s | 秒数 | number | 55 |
| S | 毫秒数 | number | 978 |
| z | 时区 | text | Pacific Standard Time; PST |
| Z | 时区偏移值 | zone | -0800; -08:00; America/Los_Angeles |
| ' | 文本转义符 | delimiter | |
| '' | 单引号 | literal |
语法
sql
strftime(tm: expr | columnName, layout: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 String 类型的数值
示例
sql
> SELECT strftime("2021-10-11T15:04:05Z", "YYYY")
┌─strftime("2021-10-11T15:04:05Z", "YYYY")───────────────────┐
│ 2021 │
└────────────────────────────────────────────────────────────┘strptime
将 layout 格式的字符串 v 转为时间
语法
sql
strptime(v: expr | columnName, layout: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 DateTime 类型的数值
示例
sql
> SELECT strptime("2021-11-01", "YYYY-MM-dd")
┌─strptime("2021-11-01", "YYYY-MM-dd")─────────────────┐
│ 2021-11-01T00:00:00Z │
└──────────────────────────────────────────────────────┘sql
> SELECT strptime("15:04:05", "HH:mm:ss")
┌─strptime("15:04:05", "HH:mm:ss")───────────────────────┐
│ 0000-01-01T15:04:05Z │
└────────────────────────────────────────────────────────┘f32_to_f64
将参数 f 转为 Float64
语法
sql
f32_to_f64(f: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Float64 类型的数值
示例
sql
> SELECT f32_to_f64(10)
┌─f32_to_f64(10)────────────────┐
│ 10 │
└───────────────────────────────┘isnull
返回 e 是否为 NULL,为空返回 1,不为空返回 0
语法
sql
isnull(e: expr | columnName)参数
expr- 表达式。columnName- 字段名或字段别名。
返回值
- 返回 Int8 类型的数值
示例
sql
> SELECT isnull("")
┌─isnull("")────────────────────┐
│ 0 │
└───────────────────────────────┘sql
> SELECT isnull(null)
┌─isnull(null)──────────────────┐
│ 1 │
└───────────────────────────────┘gap_fill
按时间序列插值函数
gap_fill 目前只能与 timeCol, keyCol, literal 一起使用,所以配置表如果没有时间列和 key 列暂不支持插值函数
在 where 条件中必须存在时间分隔周期参数:_interval, 可选单位为 时(h), 分(m), 秒(s), 若不存在 _interval 参数,则使用时间过滤的 end - start 作为 interval,即划分 1 个时间片。
插值是一个数据解压缩的过程,如果查询的时间范围比较广,时间分隔周期参数比较小,数据将会剧烈膨胀。
比如 时间范围过滤为 2021-01-01T00:00:00Z 到 2022-01-01T00:00:00Z,时间分隔周期为 1s,
那么将会返回 365(d) * 24(h) * 60(m) * 60(s) = 31,536,000 条数据。
所以在使用该函数时,请谨慎选择时间范围和时间分隔周期。
多个 gap_fill 函数将会基于同一个时间序列进行填充,允许每个函数使用不同的填充方式
比如 gap_fill(a, method("prev")), gap_fill(b, method("linear")) 的时间基线为同一个
语法
sql
gap_fill(expr: columnName, method("prev"), fill_value("1"), ignore_null(true))参数
expr- 表达式。method- 插值方法,默认 NULL- PREV: 插入在当前时间点之前的最近的一个值
- LINEAR: 线性插值,需为数值类型 (VtInt8, VtInt16, VtInt32, VtInt64, VtFloat32, VtFloat64)
- NULL: 在当前时间点无数据时,插入 null
- NEXT: 插入在当前时间点之后的最近的一个值
- VALUE: 在当前时间点无数据时,插入固定值
fill_value: 可选参数,当 method 为VALUE时,使用该参数,其他情况忽略ignore_null: 可选参数,插值时是否忽略值为 null 的时间,默认 false01: 1, 02: null, 04: 4 gap_fill(..., method("prev"), ignore_null(true)) 忽略 null 值,所以 03 这个点将会取 01 的值 -> 01: 1, 02: 1, 03: 1, 04: 4 gap_fill(..., method("prev"), ignore_null(false)) 不忽略 null 值,所以 03 这个点将会取 02 的值,即为 null -> 01: 1, 02: 1, 03: null, 04: 4
也可以将以上参数放在 where 表达式中,效果一致:
SELECT columnName
FROM table
WHERE TM > $start AND TM < $end
AND _interval = '1s' AND _method = 'prev' AND _fill_value = '123' AND _ignore_null = true返回值
若不存在上述伪列,则只返回插值后的结果(单列)
示例
查询:
sql
SELECT gap_fill(col, method("prev")) FROM ... WHERE ... AND _interval="1s"
SELECT gap_fill(col, method("value"), fill_value("1")) FROM ... WHERE ... AND _interval="1s"
SELECT gap_fill(col, method("linear")), "1234" FROM ... WHERE ... AND _interval="1s"结果:
sql
> SELECT gap_fill(col, method("linear")),
gap_fill(col2, method("prev")),
"1234"
FROM ...
WHERE ...
AND _interval='1s';
┌─gap_fill(col, method("linear"))──┬─gap_fill(col2, method("prev"))─────┬─"1234"──┐
│ 10 │ 30 | 1234 |
│ 11 │ 40 | 1234 |
└──────────────────────────────────┴────────────────────────────────────┴─────────┘sql
> SELECT keyCol,
timeCol,
gap_fill(col, method("linear")),
gap_fill(col2, method("prev")),
"1234"
FROM ...
WHERE ...
AND _interval='1s'
┌─keyCol────────┬─timeCol───────────────┬─gap_fill(col, method("linear"))──┬─gap_fill(col2, method("prev"))─────┬─"1234"──┐
│ abc | 2021-11-01T00:00:00Z | 10 │ 30 | 1234 |
│ abc | 2021-11-01T00:00:01Z | 11 │ 40 | 1234 |
└───────────────┴───────────────────────┴──────────────────────────────────┴────────────────────────────────────┴─────────┘
帮助中心