【问题标题】:Azure Stream Analytics WindowingAzure 流分析窗口化
【发布时间】:2017-05-02 00:11:01
【问题描述】:

我在使用流分析窗口时遇到了一些问题。我的流分析作业的输入是一个事件流,其中包含来自属于信号的传感器/实体的温度读数。每个信号有大约 600 个实体。示例事件如下所示。

{
    "SignalId": "1",
    "EntityId": "1",
    "Temperature": 78   
}

流分析正在从类似这样的参考数据块中读取每个实体的阈值。

 [{
     "SignalId": "1",
     "Entities": [{
         "Id": 1,
         "Threshold": 60
      }, {
          "Id": 2,
          "Threshold": 108
      }, {
          "Id": 3,
          "Threshold": 106
      }]
 }, {
     "SignalId": "2",
     "Entities": [{
         "Id": 1,
         "Threshold": 65
    }, {
        "Id": 2,
        "Threshold": 120
    }, {
        "Id": 3,
        "Threshold": 107
    }]
 }]

我编写了一个流分析查询来过滤事件,如果温度值大于它们各自的阈值,则将“警报”插入 Azure SQL 数据库。

SELECT
    e.SignalId AS SignalId,
    e.EntityId AS EntityId,
    e.Temperature AS AttrValue,
    entities.ArrayValue.Threshold AS Threshold,
    SYSTEM.TIMESTAMP AS EventTimestamp
INTO
    output
FROM
    eventhub e
JOIN 
    referenceblob b 
ON 
    e.SignalId = b.SignalId
CROSS APPLY 
    GetElements(b.Entities) entities
WHERE
    e.EntityId = entities.ArrayValue.Id
AND
    e.Temperature > entities.ArrayValue.Threshold

我现在需要的是在上面放置一个滑动窗口(我假设)。如果实体的温度值连续超过其各自的阈值 1 小时,我只想创建一个“警报”。插入的行应包含与窗口中最后一个事件相关的数据。

我是流分析和 T-SQL 的新手,老实说,我并不完全了解窗口函数的工作原理。这是我的问题...

  1. 如果我连续 30 分钟收到不良事件(温度高于阈值),然后收到一个好事件,是否可以编写一个查询,以便从下一个坏事件开始一个新窗口?

  2. 是否可以选择窗口中最后一个事件的数据?我尝试使用 LAST() 和 LAG() 但它给了我一个编译错误,说“不能在没有聚合函数的情况下使用 GROUP BY”。问题是我不需要聚合函数,只需要最后一个事件值。

我已经被这个问题困扰了好几天,我们将不胜感激。

另外,这是我的第一个问题,请原谅我的笨拙

【问题讨论】:

    标签: tsql azure complex-event-processing stream-analytics


    【解决方案1】:

    您可以使用滑动窗口来实现这一点。 滑动窗口在每个事件上产生输出,并回顾提供的持续时间。在您的示例中,仅当读数低于阈值 1 小时时才需要输出。像下面这样的查询应该可以工作。

    SELECT
        Entity,
        max(Reading) MaxReading
    INTO
        [YourOutputAlias]
    FROM
        [YourInputAlias]
    group by
        Entity,
        SlidingWindow(hour,1)
    having
        MaxReading < 100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多