具有多个条件的基于 Azure 流分析阈值的规则

问题描述

我是 Azure 流分析的新手。我已经阅读了有关 threshold based rules 的 Microsoft 文章。并使用以下基于单个条件的规则配置,我也能够获得正确的输出

我的参考/规则数据:

{
    "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)
)

但是现在,我需要配置满足多个条件的规则。我尝试了几种方法,但无法使其动态化。
我尝试在查询的 WHERE 条件中使用自定义 UDF 函数来动态生成查询。但不幸的是,这也不受支持。 (如果我错了,请纠正我)。

例如我的新参考/规则数据是:

{
    "rule_id": 1233,"alert_message": "Temperature above 93 °C & Pressure beyond range (50-100)","conditions": [
        {
            "property": "Temperature","threshold": 93
        },"AND",[
            {
                "property": "Pressure","operator": "LESSOREQUAL","threshold": 50
            },"OR",{
                "property": "Pressure","threshold": 100
            }
        ]
    ]
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)