Azure stream analytics基于阈值的多条件规则

Azure stream analytics基于阈值的多条件规则,azure,iot,azure-stream-analytics,stream-analytics,Azure,Iot,Azure Stream Analytics,Stream Analytics,我是Azure stream analytics的新手。我已经阅读了有关微软的文章。使用下面的单条件规则配置,我也能得到正确的输出 我的参考/规则数据: { "rule_id": 1234, "device_id": "xyz", "property": "Temperature", "alert_message": "High tem

我是Azure stream analytics的新手。我已经阅读了有关微软的文章。使用下面的单条件规则配置,我也能得到正确的输出

我的参考/规则数据:

{
    "rule_id": 1234,
    "device_id": "xyz",
    "property": "Temperature",
    "alert_message": "High temperature: Temperature above 93 °C",
    "operator": "GREATEROREQUAL",
    "threshold": 93
}
我的遥测数据包示例:

{
    "deviceId": "xyz",
    "Temperature": 45.43,
    "Pressure": 55.32
}
我的流分析输入是IOTHUB,输出是Azure函数

我的流分析查询:

SELECT tl.*, [rule]
FROM IOTHUB as tl TIMESTAMP BY tl.EventEnqueuedUtcTime
JOIN ReferenceData [rule]
ON [rule].device_id = tl.deviceId 
WHERE (
    ([rule].operator = 'GREATEROREQUAL' AND GetRecordPropertyValue(tl, [rule].property) >= [rule].threshold) OR 
    ([rule].operator = 'LESSOREQUAL' AND GetRecordPropertyValue(tl, [rule].property) <= [rule].threshold) OR 
    ([rule].operator = 'EQUAL' AND GetRecordPropertyValue(tl, [rule].property) = [rule].threshold) OR
    ([rule].operator = 'LESS' AND GetRecordPropertyValue(tl, [rule].property) < [rule].threshold) OR 
    ([rule].operator = 'GREATER' AND GetRecordPropertyValue(tl, [rule].property) > [rule].threshold)
)

您好,如果您的规则具有类似的模式,例如temp>X和(pressureZ),那么您可以在加入引用数据后,在SQL中编写该模式。如果规则更复杂,那么使用Javascript(如本文另一个线程中所述)确实会有所帮助:
{
    "rule_id": 1233,
    "device_id": "xyz",
    "alert_message": "Temperature above 93 °C & Pressure beyond range (50-100)",
    "conditions": [
        {
            "property": "Temperature",
            "operator": "GREATEROREQUAL",
            "threshold": 93
        },
        "AND",
        [
            {
                "property": "Pressure",
                "operator": "LESSOREQUAL",
                "threshold": 50
            },
            "OR",
            {
                "property": "Pressure",
                "operator": "GREATEROREQUAL",
                "threshold": 100
            }
        ]
    ]
}