我在Azure Iot Edge中有2个简单的管道。现在,我有兴趣访问在管道中的每个步骤/节点处添加到iot消息的时间戳。例如,IoTHub和ASA的'enqueuingTime'和IoTHub和ASA的'processedTime'等。以下是管道:
IoT边缘设备(输入数据源) - > IoTHub - >自定义端点到Azure存储+路由 - > Azure Blob
到目前为止,我发现每个iot消息都附加到标题中包含属性EnqueuedTimeUtc
和SystemProperties.enqueuedTime
的blob文件中。此外,两者都显示相同的值。这是在IoTHub中收到消息的时间还是在IoTHub内部处理消息的时间?
此外,如果我将自定义端点用于Azure存储,则会将邮件批处理到单个blob文件中。是否可以在单个消息离开IotHub时以及何时将其写入blob文件时访问时间戳? (即我希望获得类似 IoTHub-Processed-Timestamp 或 Blob-Insertion-Timestamp 的个别消息。)
IoT边缘设备(输入数据源) - > IoTHub - > Azure流分析 - > Azure SQL数据库
在这种情况下,当我定义ASA查询时,输入是IoTHub端点Messaging
。在Select
语句中,我可以访问整个邮件标题,因此,我还可以访问EventEnqueuedUtcTime
和EventProcessedUtcTime
,它们是流分析作业中邮件排队和流程完成的时间戳。此外,我可以访问IoTHub.EnqueuedTime
,我假设它给出了消息在IoTHub中排队的时间戳。 当消息从ASA进入并插入SQL DB时,有没有办法获取时间戳?到目前为止,我使用GETDATE()
在插入记录时自动附加时间戳。这是个好主意吗?
如果我对Azure Iot时间戳有正确的理解,有人可以告诉我吗?是否有关于如何访问所有此类时间戳的文档?
答案 0 :(得分:1)
EventProcessedUtcTime
是来自Stream Analytics中IoT Hub的事件的默认时间戳,是事件到达IoT Hub的时间戳。 EventEnqueuedUtcTime
是Stream Analytics处理事件的日期和时间。更多信息document。
正如您在使用IoT Hub中的流数据时所提到的,您可以在Stream Analytics查询中访问EventProcessedUtcTime和EventEnqueuedUtcTime。
当单个数据流包含多个在不同字段中具有时间戳的事件类型时,您现在可以使用带有表达式的TIMESTAMP BY为每个case指定不同的时间戳字段.ASA是一个时间系统,因此每个流经的事件都是它有一个时间戳。根据事件到达输入源的到达时间自动分配时间戳,但您也可以使用TIMESTAMP BY显式访问事件有效内容中的时间戳。
<强>更新强>
此外,IoTHub.EnqueuedTime
是IoT Hub收到事件的日期和时间。但是,IoTHub.EnqueuedTime
是物联网中心收到消息的时间。当设备/ DeviceClient向IoTHub发送遥测消息时,遥测路径上不支持DATABASE_URL
。 Azure IoT Hub提供从连接的设备流式传输数据的功能,并将这些数据集成到您的业务应用程序中。 IoT Hub提供消息路由和事件路由,用于将IoT事件集成到其他Azure服务或业务应用程序中。更多信息here。