Sql Azure Stream Analytics中具有不同模式的多个警报联盟

Sql Azure Stream Analytics中具有不同模式的多个警报联盟,sql,azure,azure-stream-analytics,Sql,Azure,Azure Stream Analytics,我有一个EventHub,它接收带有JSON K/V对的事件,这些JSON K/V对可以变化。我想做的是运行单个流分析作业,并创建多个警报,同时保留结果中的所有K/V对。例如,可以看到这样的事件: {"temp1": 45, "temp2": 60, "source": "sensor-a"}, {"temp1": 37, "temp2": 50, "humidity": 17, "source": "new-sensor"} 我用湿度作为一个例子,但重点是关键是不同的 一种可行的方法是,我可

我有一个EventHub,它接收带有JSON K/V对的事件,这些JSON K/V对可以变化。我想做的是运行单个流分析作业,并创建多个警报,同时保留结果中的所有K/V对。例如,可以看到这样的事件:

{"temp1": 45, "temp2": 60, "source": "sensor-a"},
{"temp1": 37, "temp2": 50, "humidity": 17, "source": "new-sensor"}
我用湿度作为一个例子,但重点是关键是不同的

一种可行的方法是,我可以使用各种
WHERE
子句运行多个select语句

SELECT *, ALERT='Temp LOW' FROM [input] WHERE temp1 < 15
UNION
SELECT *, ALERT='Humidity HIGH' FROM [input] WHERE humidity > 50
我认为可能有效的一件事是,我可以使用WITH语句生成警报字段,然后使用联接添加到事件流中。我可以为每个要加入的事件生成UUID。我还没弄明白


是否有任何方法可以将原始事件作为JSON中的子事件返回,或者使用JOIN方法添加警报字段?

是的,可以使嵌套记录选项起作用(其中原始事件是结果中的子记录)

以下是您的问题中修改的示例查询:

SELECT raw_data=[input], ALERT='Temp LOW' FROM [input] WHERE temp1 < 15
UNION
SELECT raw_data=[input], ALERT='Humidity HIGH' FROM [input] WHERE humidity > 50
从[input]中选择原始数据=[input],警报='Temp LOW',其中temp1<15
联合
从湿度>50的[input]中选择raw_data=[input],ALERT='湿度高'
SELECT raw_data=[input], ALERT='Temp LOW' FROM [input] WHERE temp1 < 15
UNION
SELECT raw_data=[input], ALERT='Humidity HIGH' FROM [input] WHERE humidity > 50