我在使AWS IoT Analytics Delta窗口(docs)正常工作方面遇到真正的问题。
我正在尝试进行设置,以便每天运行查询以仅获取最后1小时的数据。根据文档,schedule
功能可用于使用cron表达式(在我的情况下,每小时)运行查询,而delta window
应该将查询限制为仅包含指定时间内的记录窗口(在我的情况下为最后一个小时)。
我正在运行的SQL查询只是SELECT * FROM dev_iot_analytics_datastore
,如果我不包括任何增量窗口,则将按预期获得记录。不幸的是,当我包含一个增量表达式时,我什么也得不到。我现在将数据累积了大约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的子集用于分析,因此将其用于增量很有意义,但是文档只是说' ...任何有效的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)
答案 0 :(得分:0)
您使用的偏移量和时间表达参数是什么?
由于增量窗口是有效插入SQL的过滤器,因此您可以通过将过滤器表达式手动插入数据集的查询中来对它们进行故障排除。
即,将具有-3分钟(负)偏移量和'from_unixtime(my_timestamp)'时间表达式的增量窗口过滤器应用于'SELECT my_field FROM my_datastore'查询将转换为等效查询:
SELECT my_field FROM
(SELECT * FROM "my_datastore" WHERE
(__dt between date_trunc('day', iota_latest_succeeded_schedule_time() - interval '1' day)
and date_trunc('day', iota_current_schedule_time() + interval '1' day)) AND
iota_latest_succeeded_schedule_time() - interval '3' minute < from_unixtime(my_timestamp) AND
from_unixtime(my_timestamp) <= iota_current_schedule_time() - interval '3' minute)
尝试使用类似的查询(不带增量时间过滤器),对偏移量和时间表达式使用正确的值,然后看清得到的结果。(_dt之间...)只是用于限制扫描分区的一种优化。您可以将其删除以进行故障排除。
答案 1 :(得分:0)
请尝试以下操作:
SELECT * FROM dev_iot_analytics_datastore
Delta time
from_unixtime(timestamp_sec)
答案 2 :(得分:0)