Как получить доступ к различным временным меткам в Azure Iot Edge Pipeline?

У меня есть 2 простых конвейера в Azure Iot Edge. Теперь я заинтересован в доступе к временным меткам, добавляемым к сообщению iot на каждом шаге / узле в конвейере. Например, "enqueuingTime" в IoTHub и ASA и "processingTime" из IoTHub и ASA и т. Д. Ниже приведены конвейеры:

  1. IoT Edge Device (источник входных данных) -> IoTHub -> Пользовательская конечная точка для хранилища Azure + Маршрут -> BLOB-объект Azure

    До сих пор я обнаружил, что каждое сообщение iot добавляется в BLOB-файл со свойством EnqueuedTimeUtc а также SystemProperties.enqueuedTimeв шапке. Кроме того, оба отображают одно и то же значение. Это время, когда сообщение принимается в IoTHub или время его внутренней обработки в IoTHub?

    Более того, если я использую пользовательскую конечную точку в хранилище Azure, сообщения объединяются в один файл большого двоичного объекта. Можно ли получить доступ к отметке времени, когда одно сообщение покидает IotHub, а также когда оно записывается в BLOB-файл? (т.е. я хочу получить что-то вроде IoTHub-Processed-Timestamp или Blob-Insertion-Timestamp отдельных сообщений.)

  2. IoT Edge Device (источник входных данных) -> IoTHub -> Azure Stream Analytics -> База данных SQL Azure

    В этом случае, когда я определяю запрос ASA, вводом является конечная точка IoTHub Messaging, в Select Заявление, я могу получить доступ ко всему заголовку сообщения и, таким образом, я также могу получить доступ EventEnqueuedUtcTime а также EventProcessedUtcTime, которые являются временными метками постановки сообщения и завершения процесса в задании Stream Analytics. Далее я могу получить доступ IoTHub.EnqueuedTime, который я предполагаю, дает метку времени, когда сообщение ставится в очередь в IoTHub. Есть ли способ получить метку времени, когда сообщение поступает из ASA и вставляется в базу данных SQL? Пока я использую GETDATE() автоматически прикреплять отметку времени при вставке записи. Это хорошая идея?

    Кто-нибудь может сообщить мне, правильно ли я понимаю метки времени Azure Iot? Есть ли документация о том, как получить доступ ко всем таким временным меткам?

1 ответ

EventEnqueuedUtcTime является меткой времени по умолчанию для событий, поступающих из IoT-хаба в Stream Analytics, и является меткой времени, когда событие поступило в IoT-хаб. EventProcessedUtcTime это дата и время, когда событие было обработано Stream Analytics. Подробнее этот документ. Как вы упоминали, когда вы используете потоковые данные из концентратора IoT, у вас есть доступ к EventProcessedUtcTime и EventEnqueuedUtcTime в вашем запросе Stream Analytics.

Когда один поток данных содержит несколько типов событий, имеющих временные метки в разных полях, теперь вы можете использовать TIMESTAMP BY с выражениями, чтобы указать разные поля временных меток для каждого случая.ASA - это временная система, поэтому каждое событие, которое проходит через нее, имеет временную метку. Временная метка назначается автоматически в зависимости от времени прибытия события в источник ввода, но вы также можете получить доступ к временной метке в полезной нагрузке события явно, используя TIMESTAMP BY.

Обновление: кроме того, EventEnqueuedUtcTime дата и время, когда событие было получено центром IoT. Но IoTHub.EnqueuedTime время, когда сообщение было получено центром IoT. IoTHub.EnqueuedTime не поддерживается на пути телеметрии, когда Device/DeviceClient отправляет телеметрическое сообщение на IoTHub.Azure IoT Hub предоставляет возможность потоковой передачи данных с подключенных устройств и интеграции этих данных в ваши бизнес-приложения. IoT Hub предлагает маршрутизацию сообщений и событий для интеграции событий IoT в другие службы Azure или бизнес-приложения. Более подробная информация здесь.

Другие вопросы по тегам