1

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

有没有人建议如何使用查询或如何在 AWS IoT Analytics 中检索 2 个时间戳之间的数据?

谢谢, 潘卡伊

4

2 回答 2

2

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

可能的方法是;

1)创建一个计划查询以每小时运行一次(例如),查询看起来像这样;

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

您可能需要调整时间戳的格式以适应您的存储方式(纪元秒、纪元毫秒、ISO8601 等。如果您将其设置为每小时运行一次,则每次执行时,您将获得最后一小时数据。请注意,__dt 约束仅通过将扫描限制在最近一天来帮助您的查询运行得更快(并且更便宜)。

2)您可以通过使用数据集的增量窗口功能来改进上述内容,这可以让您更轻松地获取自上次运行查询以来到达的数据。然后,您可以简化查询,使其看起来像;

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

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

3) 如果您有更通用的要求来获取您正在以编程方式计算的 2 个时间戳之间的数据,并且可能不是 now() 的形式 - 某个间隔,您可以这样做的方法是创建一个数据集,然后在使用 create-dataset-content 运行数据集之前,使用修改后的 SQL 表达式更新数据集。这样,数据集内容就会更新为每次执行所需的结果。如果对此感兴趣,我可以扩展所需的实际 python。

4) 正如 Thomas 所建议的,使用数据集提取更大的数据块(例如最后一天)通常同样容易,然后在代码中过滤到您想要的时间戳。例如,如果您使用panda 数据框,并且有很多相关问题(例如这个问题有很好的答案),这将特别容易。

于 2018-11-01T06:55:16.137 回答
0

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

这就是 QuickSight 允许您及时导航数据集的功能。

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

于 2018-10-29T09:17:50.593 回答