AWS IoT Analytics查询使用boto3从数据集中检索数据



我们可以在AWS IoT Analytics中从数据集中检索数据时使用查询吗?我想要2个时间戳之间的数据。我正在使用boto3来获取数据。我没有看到在获取数据集内容中使用查询的任何选项。下面是boto3代码:response = client.get_dataset_content( datasetName='string', versionId='string' )

有人建议如何在AWS物联网分析中使用查询或如何重新过滤2个时间戳之间的数据吗?

谢谢,Pankaj

根据您的工作流程,可能有几种方法可以做到这一点,如果您有更多的细节,那将很有帮助。

可能的方法有:;

1( 创建一个计划查询,每隔一小时运行一次(例如(,查询如下所示;

SELECT * FROM my_datastore WHERE __dt >= current_date - interval '1' day
AND my_timestamp >= now() - interval '1' hour

您可能需要根据存储时间戳的方式(epoch秒、epoch毫秒、ISO8601等(调整时间戳的格式。如果您将其设置为每小时运行一次,每次执行时,您都会获得最后一个小时的数据。请注意,__dt约束只会将扫描限制在最近一天,从而帮助您的查询更快(更便宜(地运行。

2( 您可以通过使用数据集的delta窗口函数来改进以上内容,该函数使您能够更容易地获取自上次运行查询以来已到达的数据。然后,您可以将查询简化为:;

select * from my_datastore where __dt >= current_date - interval '1' day

并配置delta时间窗口以查看时间戳字段。然后,您可以控制执行查询的频率(每15分钟、每小时等(检索多少数据。

3( 如果您有一个更通用的要求,即在程序计算的两个时间戳之间获取数据,并且可能不是now((-某个间隔的形式,那么您可以这样做:创建一个数据集,然后使用修改后的SQL表达式更新数据集,再使用创建数据集内容运行它。通过这种方式,数据集内容只更新为每次执行所需的结果。如果对此感兴趣,我可以扩展所需的实际python。

4( 正如Thomas所建议的,从数据集中提取更大的数据块(例如最后一天(,然后过滤到代码中所需的时间戳,通常也同样容易。例如,如果你使用熊猫数据帧,并且有很多相关的问题,比如这个问题,都有很好的答案,那么这就特别容易了。

坦率地说,最简单的事情是自己进行时间过滤(get_dataset_content的结果是一个csv文件(。

这就是QuickLight所做的,使您能够及时浏览数据集。

如果这不可行,则可选择使用更新的管道重新处理数据存储,该管道过滤掉除您感兴趣的时间范围之外的所有内容(此处提供更多信息(。您应该注意,虽然对StartPipelineReprocessing使用startTimeendTime参数很诱人,但这些参数仅近似于最接近的小时。

相关内容

  • 没有找到相关文章