Skip to content

时间相关函数

以下所有的函数

表达式中参数说明:
expr :表达式
columnName :字段名

datediff

计算日期 startTimeendTime 之间相差的天数

语法

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

判断 timestr1timestr2 是否相等 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

判断 timestr1timestr2 是否不相等 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 是否在 timestr2timestr3 之间 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 是否在 timestr2timestr3 之间或相等 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

返回 t1t2 的差异部分

语法

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纪元textAD
C纪元世纪 (>=0)number20
Y纪年 (>=0)year1996
x周年year1996
w周年中的周数number27
e星期几number2
E星期几textTuesday; Tue
y年份year1996
D一年的第几天number189
M一年的第几个月monthJuly; Jul; 07
d一个月的第几天number10
a一天中的半天textPM
K12 小时制的小时数number0
h12 小时制的小时数number12
H24 小时制的小时数number0
k24 小时制的小时数number24
m分钟数number30
s秒数number55
S毫秒数number978
z时区textPacific 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 的时间,默认 false

    01: 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"──┐
1030                                | 1234    |
1140                                | 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  |   1030                                | 1234    |
│ abc           | 2021-11-01T00:00:01Z  |   1140                                | 1234    |
└───────────────┴───────────────────────┴──────────────────────────────────┴────────────────────────────────────┴─────────┘