我正在尝试使用来自事件中心的参考数据和输入流在Azure Stream Analytics作业中设置规则。
这是我在BLOB存储中的参考数据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
这不会产生任何结果。但是,当我使用样本输入和参考数据进行测试时,我得到了预期的结果。但这似乎与流数据无关。我的用例是如果6秒窗口的平均速度大于500,则存储导致另一个blob存储。一段时间内,速度值大于500,但我没有得到任何结果。
我究竟做错了什么?
这一直在努力。我只需要在流分析的参考输入路径中指定参考blob的输入路径,包括文件名。我基本上只引用了没有实际文件的blob容器。所以当我将路径模式更改为“filename.json”时,我得到了结果。这是一个愚蠢的错误。