0

我在 Azure IoT Edge 中有 2 个简单的管道。现在,我有兴趣访问在管道中的每个步骤/节点添加到 iot 消息中的时间戳。例如 IoTHub 和 ASA 的“enqueuingTime”和 IoTHub 和 ASA 的“processedTime”等。以下是管道:

  1. IoT Edge 设备(输入数据源)-> IoTHub -> 自定义端点到 Azure 存储 + 路由 -> Azure Blob

    到目前为止,我发现每个 iot 消息都附加到一个带有属性的 blob 文件,EnqueuedTimeUtc并且SystemProperties.enqueuedTime在标头中。此外,两者都显示相同的值。这是IoTHub收到消息的时间还是IoTHub内部处理的时间?

    此外,如果我在 Azure 存储中使用自定义端点,消息会被批处理到单个 blob 文件中。是否可以在单个消息离开 IotHub 以及将其写入 blob 文件时访问时间戳?(即,我想获得诸如IoTHub-Processed-Timestamp或单个消息的Blob-Insertion-Timestamp之类的东西。)

  2. IoT Edge 设备(输入数据源)-> IoTHub -> Azure 流分析 -> Azure SQL 数据库

    在这种情况下,当我定义 ASA 查询时,输入是 IoTHub 端点Messaging。在Select语句中,我可以访问整个消息头,因此,我还可以访问EventEnqueuedUtcTimeEventProcessedUtcTime,它们是流分析作业中消息入队和处理完成的时间戳。此外,我可以访问IoTHub.EnqueuedTime,我假设它给出了消息在 IoTHub 中排队时的时间戳。当消息从 ASA 进入并插入 SQL DB 时,有没有办法获取时间戳?到目前为止,我正在使用GETDATE()在插入记录期间自动附加时间戳。这是一个好主意吗?

    如果我对 Azure IoT 时间戳有正确的理解,谁能告诉我?是否有关于如何访问所有此类时间戳的文档?

4

1 回答 1

2

EventEnqueuedUtcTime是流分析中来自 IoT 中心的事件的默认时间戳 是事件到达 IoT 中心的时间戳。EventProcessedUtcTime是流分析处理事件的日期和时间。本文档的更多信息。正如您在使用来自 IoT 中心的流数据时提到的,您可以在流分析查询中访问 EventProcessedUtcTime 和 EventEnqueuedUtcTime。

当单个数据流包含在不同字段中具有时间戳的多种事件类型时,您现在可以将TIMESTAMP BY与表达式一起使用,为每种情况指定不同的时间戳字段。ASA 是一个时间系统,因此流经它的每个事件都有一个时间戳。时间戳是根据事件到达输入源的时间自动分配的,但您也可以使用 TIMESTAMP BY 显式访问事件有效负载中的时间戳。

更新: 此外,是IoT 中心收到事件EventEnqueuedUtcTime的日期和时间。但是是IoT 中心收到消息的时间。当 Device/DeviceClient 向 IoTHub 发送遥测消息时,遥测路径不支持。Azure IoT Hub 提供了从连接的设备流式传输数据并将该数据集成到业务应用程序中的功能。IoT Hub 提供消息路由和事件路由,用于将 IoT 事件集成到其他 Azure 服务或业务应用程序中。更多信息请点击此处IoTHub.EnqueuedTimeIoTHub.EnqueuedTime

于 2018-06-13T06:18:05.680 回答