Как получить доступ к различным временным меткам в Azure Iot Edge Pipeline? - PullRequest
0 голосов
/ 13 июня 2018

У меня есть 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 Ответ

0 голосов
/ 13 июня 2018

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 или бизнес-приложения. Подробнее здесь .

...