【问题标题】:Azure stream analytics create dynamic queries through codeAzure 流分析通过代码创建动态查询
【发布时间】:2024-04-17 20:35:01
【问题描述】:

我有一个 Web 应用程序,它允许用户在浏览器 UI 中为某些传感器值创建警报规则。因此,用户可以在传感器值上创建任意数量的警报规则。 AWS IoT 核心允许使用 JS 开发工具包创建多个警报规则。类似的事情我正在研究 Azure 流分析 [ASA],但我发现了如下所列的一些阻止程序:-

  1. ASA 不提供 JS sdk 在运行时创建查询。至少我在互联网上找不到它。如果有任何允许在运行时创建查询的方法,请提供帮助。
  2. 如果第 1 点成立,ASA 是否允许我创建多个查询。例如,我需要创建多个条件不同的警报。请帮忙。

【问题讨论】:

    标签: azure-stream-analytics


    【解决方案1】:

    关于您最初的需求,this article 详细介绍了通过参考数据集实现动态规则的模式。所以一个查询,从数据库或文件加载规则定义。

    对于 1 和 2,ASA 有 .NET SDKREST API。但是没有 JavaScript SDK。

    【讨论】:

    • 我没有静态参考数据集,运营商不是静态的。规则应在基于某些业务逻辑的代码中创建,并作为查询传递给 ASA。我认为您使用参考数据集的方法行不通。
    • 动态规则模式允许您提供由用户动态创建的规则。参考数据集只是 Azure SQL 中的一个表(或存储帐户中的文件),它存储这些规则的定义,包括其范围 (deviceId)、运算符(通过您支持的规则的枚举,例如 GREATER、GREATEROREQUAL。 .) 应用它的字段(通过 GetRecordPropertyValue 在查询中动态访问)和阈值。因此,该表中的记录可能类似于 (DeviceId, 'Temperature', 'GREATEROREQUAL', 70)。然后在查询中加入它
    • 当用户在您的 UI 中创建规则时,您的应用将在该表/文件中插入一行,其中包含所有必需的信息(范围、运算符、字段、值)。该表/文件是您在 ASA 中的参考数据集。
    • 关于您在表中插入参考数据的评论,假设我在表中插入了 1000 个 JSON 对象。现在,ASA 是否会针对每个流式事件评估所有 1000 个 JSON 对象参考数据?如果是,我需要结果为 1000 个对象,因为所有 1000 个引用数据规则都不同地保存在表中。
    • 为了避免进行笛卡尔连接,最好在规则中引用范围是的。规则越窄在连接性能方面越好,但您可能不得不处理 ASA (docs.microsoft.com/en-us/azure/stream-analytics/…) 中参考数据集的限制。