У меня возникли проблемы с Window Analytics Windowing. Вход в мое приложение Stream Analytics Job - это поток событий, который содержит показания температуры от датчиков/объектов, которые относятся к сигналу. Каждый сигнал имеет около 600 объектов. Примерное событие будет выглядеть так.Azure Stream Analytics Окно
{
"SignalId": "1",
"EntityId": "1",
"Temperature": 78
}
Поток аналитики считывает пороговые значения для каждой сущности из базового блока данных, который выглядит примерно так.
[{
"SignalId": "1",
"Entities": [{
"Id": 1,
"Threshold": 60
}, {
"Id": 2,
"Threshold": 108
}, {
"Id": 3,
"Threshold": 106
}]
}, {
"SignalId": "2",
"Entities": [{
"Id": 1,
"Threshold": 65
}, {
"Id": 2,
"Threshold": 120
}, {
"Id": 3,
"Threshold": 107
}]
}]
Я написал поток Analytics Query, чтобы отфильтровать событие и вставить «Alarm» в базу данных SQL Azure, если значения температуры превышают соответствующие пороговые значения.
SELECT
e.SignalId AS SignalId,
e.EntityId AS EntityId,
e.Temperature AS AttrValue,
entities.ArrayValue.Threshold AS Threshold,
SYSTEM.TIMESTAMP AS EventTimestamp
INTO
output
FROM
eventhub e
JOIN
referenceblob b
ON
e.SignalId = b.SignalId
CROSS APPLY
GetElements(b.Entities) entities
WHERE
e.EntityId = entities.ArrayValue.Id
AND
e.Temperature > entities.ArrayValue.Threshold
Теперь мне нужно поставить на это раздвижное окно (я полагаю). Я хочу создать «Тревога», если значение температуры для объекта непрерывно пересекает свой порог в течение 1 часа. Вставленная строка должна содержать данные, связанные с последним событием в окне.
Я новичок в Stream Analytics и T-SQL и, честно говоря, не совсем понял, как работают оконные функции. Вот мои вопросы ...
Если я получаю плохие события (где температура выше порога) непрерывно в течение 30 минут, а затем получить хорошее событие, можно написать запрос такой, что новое окно начинается со следующего плохого события?
Можно ли выбрать данные для последнего события в окне? Я попытался использовать LAST() и LAG(), но он дал мне ошибку компиляции: «Невозможно использовать GROUP BY без функции агрегации». Проблема в том, что мне не нужна функция Aggregate только последние значения событий.
Я застрял в этой проблеме в течение нескольких дней, и любая помощь будет принята с благодарностью.
Кроме того, это мой первый вопрос, поэтому, пожалуйста, простите мой noobishness