Я пытаюсь установить правило в задании Azure Stream Analytics с использованием справочных данных и входного потока, поступающего из концентратора событий.
Это мой JSON-пакет справочных данных в хранилище больших двоичных объектов:
{
"ruleId": 1234,
"Tag" : "TAG1",
"metricName": "velocity",
"alertName": "velocity over 500",
"operator" : "AVGGREATEROREQUAL",
"value": 500
}
А вот запрос преобразования в задании потоковой аналитики:
WITH
transformedInput AS
(
SELECT
metric = GetArrayElement(DeviceInputStream.data,0),
masterTag = rules.Tag,
ruleId = rules.ruleId,
alertName = rules.alertName,
ruleOperator = rules.operator,
ruleValue = rules.value
FROM
DeviceInputStream
timestamp by EventProcessedUtcTime
JOIN
rules
ON DeviceInputStream.masterTag = rules.Tag
)
--rule output--
SELECT
System.Timestamp as time,
transformedInput.Tag as Tag,
transformedInput.ruleId as ruleId,
transformedInput.alertName as alert,
AVG(metric.velocity) as avg
INTO
alertruleblob
FROM
transformedInput
GROUP BY
transformedInput.masterTag,
transformedInput.ruleId,
transformedInput.alertName,
ruleOperator,
ruleValue,
TumblingWindow(second, 6)
HAVING
ruleOperator = 'AVGGREATEROREQUAL' AND avg(metric.velocity) >= ruleValue
Это не дает никаких результатов. Тем не менее, когда я делаю тест с вводом образца и справочными данными, я получаю ожидаемые результаты. Но похоже, что это не работает с потоковыми данными. Мой вариант использования, если средняя скорость больше 500 для 6-секундного окна, сохраните, что приведет к другому хранилищу BLOB-объектов. Значение скорости было больше 500, но я не получаю никаких результатов.
Что я делаю не так?