我有一个EventHub接收可能有所不同的JSON K / V对的事件。我想要做的是运行单个Stream Analytics作业,并在保留结果中的所有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
但这不起作用,因为UNA不允许ASA中的SELECT *
。这种方法可行的一种方法是,原始数据可以作为名为&#39; raw_data&#39;的子项返回。我不确定如何/如果我能做到这一点。我需要其他K / V对,但我不知道所有的关键名称。
将原始数据作为子项,结果可能如下所示:
{"ALERT": "Humidity HIGH", "raw_data":
{"temp1": 33, "temp2": 52, "humidity": 60, "source": "sensorname", "otherkey": "value"}
}
我认为可能有用的一件事是我可以使用WITH语句生成ALERT字段,然后使用JOIN添加到事件流。我可以为JOIN ON的每个事件生成一个UUID。我还没有能够解决这个问题。
有没有办法在JSON中将原始事件作为子项返回,或者使用JOIN方法添加ALERT字段?
答案 0 :(得分:0)
是的,您可以使嵌套记录选项有效(原始事件是结果中的子记录)。
以下是您问题中的修改示例查询:
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