我在让 AWS IoT Analytics Delta Window ( docs ) 工作时遇到了真正的问题。
我正在尝试对其进行设置,以便每天运行查询以仅获取最后 1 小时的数据。根据文档,该schedule
功能可用于使用 cron 表达式(在我的情况下是每小时一次)运行查询,并且delta window
应该将我的查询限制为仅包括指定时间窗口内的记录(在我的情况下是最后一小时)。
我正在运行的 SQL 查询很简单SELECT * FROM dev_iot_analytics_datastore
,如果我不包含任何增量窗口,我会按预期获得记录。不幸的是,当我包含一个 delta 表达式时,我什么也得不到(永远)。我现在将数据累积了大约 10 天,因此数据库中有几百万条记录。鉴于我不确定最佳格式是什么,我在条目中包含了以下时间字段:
datetime : 2019-05-15T01:29:26.509
(A string formatted using ISO Local Date Time)
timestamp_sec : 1557883766
(A unix epoch expressed in seconds)
timestamp_milli : 1557883766509
(A unix epoch expressed in milliseconds)
AWS 还自动添加了一个名为的值__dt
,它使用与我相同的格式,datetime
但它似乎在 1 天内准确。即在给定日期内输入的所有值都具有相同的值(例如2019-05-15 00:00:00.00
)
我已经尝试了标准 SQL 和 Presto 中的一系列表达式(包括建议的 AWS 表达式),因为我不确定哪个用于此查询。我知道他们使用 Presto 的一个子集进行分析,所以他们将它用于 delta 是有道理的,但文档只是说' ......任何有效的 SQL 表达式'。
到目前为止,我尝试过的表达式没有运气:
from_unixtime(timestamp_sec)
from_unixtime(timestamp_milli)
cast(from_unixtime(unixtime_sec) as date)
cast(from_unixtime(unixtime_milli) as date)
date_format(from_unixtime(timestamp_sec), '%Y-%m-%dT%h:%i:%s')
date_format(from_unixtime(timestamp_milli), '%Y-%m-%dT%h:%i:%s')
from_iso8601_timestamp(datetime)