azure реализация потоковой аналитики или лучший подход - PullRequest
0 голосов
/ 04 февраля 2020

Я новичок в аналитике Steam и мне нужна помощь, чтобы выполнить конкретную задачу c. У меня есть данные телеметрии, поступающие из iot hub в этом формате. По сути, я буду получать данные телеметрии машин, и этап операций на этой машине будет передан в iot hub. Этапы будут обозначены тегом ex: "stageid": "stage1". Мне нужно рассчитать время, затрачиваемое на каждый этап, используя потоковую аналитику на основе метки времени и тега этапа.

пакет Пример:

[{
"Payload": {
    "devid": "01",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage1",
    "timestamp": "2020-01-24T09:22:00.3270000Z"
},
"Payload": {
    "devid": "02",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage1",
    "timestamp": "2020-01-24T09:22:00.3270000Z"
}

}]

[{
"Payload": {
    "devid": "01",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage2",
    "timestamp": "2020-01-24T09:26:00.3270000Z"
},
"Payload": {
    "devid": "02",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage2",
    "timestamp": "2020-01-26T09:24:00.3270000Z"
}

}]

Пожалуйста, помогите мне достичь этого с помощью запроса и что может быть запрос или какой другой лучший подход? Спасибо,

1 Ответ

1 голос
/ 06 февраля 2020

Насколько мне известно, ваши потребности не могут быть реализованы с помощью встроенных функций ASA. ASA - это сервис сбора и анализа данных в режиме реального времени. Другими словами, данные должны обрабатываться в режиме реального времени. Текущие данные не могут ждать следующего набора данных для выполнения вычислений или слияния. Даже если бы вы могли использовать windows функцию и группировать по, я считаю, что частота сообщений, отправляемых устройством, также является переменной.

В качестве обходного пути моя идея заключается в использовании iot-hub azure триггер функции . Внутри триггера вы можете использовать код для разбора сообщения и сохранения ключевых столбцов (stageid, timestamp, devid) в некотором хранилище, возможно, azure табличное хранилище. Перед каждой вставкой просто возьмите последнюю строку текущего устройства, чтобы вычислить время, затраченное на текущее сообщение, чтобы вы могли произвести это время для хранения в другом месте. В конце обновите последнюю строку для каждого устройства.

...