KSQL - 相对时间查询 (ANSI SQL)
KSQL - Relative time queries (ANSI SQL)
如何在使用相对时间的 bigint 列上编写 KSQL 查询?
I.E 我怎样才能实现这样的目标....
SELECT timestamp,value FROM XYZ where timestamp > now() - INTERVAL 5 MINUTES
其中timestamp是bigint字段;自纪元以来的毫秒数。
编辑:上下文。
我需要将这些查询传递给 network/database 可保存的并且我们有许多查询从 BIGINT 字段上的流中获取最后 20 分钟的数据。
I.E SELECT timestamp from STREAMNAME where timestamp > 1592882020842
saving/sending 这个查询的问题是从保存它的时间点开始经过了越来越多的时间,因此离“20 分钟前”越来越远。
我真正想要的是这样的查询。
SELECT timestamp from STREAMNAME where timestmap > now() - 20mins
无论此查询在将来 saved/loaded/sent 跨越 network/run 多少次。总是 return 20 分钟前的时间戳 -> 现在
从那以后,我在 documentatino 中找到了一些可以实现我想要的东西 UNIX_TIMESTAMP()
,其中 return 是 BIGINT 格式的以毫秒为单位的时间。
UNIX_TIMESTAMP
returns 当前挂钟时间(以毫秒为单位)在处理该行时,即它 returns 处理时间。函数返回的时间戳将随着每一行的处理而增加。
这与传统数据库处理 now
的方式不同,后者将被评估一次,并且这个单一的不可变时间戳将在查询期间使用,无论查询花费了多长时间运行.
理解其中的区别很重要。如果 UNIX_TIMESTAMP
做你想做的......那就太好了!
如何在使用相对时间的 bigint 列上编写 KSQL 查询?
I.E 我怎样才能实现这样的目标....
SELECT timestamp,value FROM XYZ where timestamp > now() - INTERVAL 5 MINUTES
其中timestamp是bigint字段;自纪元以来的毫秒数。
编辑:上下文。 我需要将这些查询传递给 network/database 可保存的并且我们有许多查询从 BIGINT 字段上的流中获取最后 20 分钟的数据。
I.E SELECT timestamp from STREAMNAME where timestamp > 1592882020842
saving/sending 这个查询的问题是从保存它的时间点开始经过了越来越多的时间,因此离“20 分钟前”越来越远。
我真正想要的是这样的查询。
SELECT timestamp from STREAMNAME where timestmap > now() - 20mins
无论此查询在将来 saved/loaded/sent 跨越 network/run 多少次。总是 return 20 分钟前的时间戳 -> 现在
从那以后,我在 documentatino 中找到了一些可以实现我想要的东西 UNIX_TIMESTAMP()
,其中 return 是 BIGINT 格式的以毫秒为单位的时间。
UNIX_TIMESTAMP
returns 当前挂钟时间(以毫秒为单位)在处理该行时,即它 returns 处理时间。函数返回的时间戳将随着每一行的处理而增加。
这与传统数据库处理 now
的方式不同,后者将被评估一次,并且这个单一的不可变时间戳将在查询期间使用,无论查询花费了多长时间运行.
理解其中的区别很重要。如果 UNIX_TIMESTAMP
做你想做的......那就太好了!