首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure流分析窗口

Azure流分析窗口
EN

Stack Overflow用户
提问于 2016-12-16 08:39:38
回答 1查看 457关注 0票数 0

我遇到了流分析窗口的问题。输入到“我的流分析作业”是一个事件流,包含来自属于信号的传感器/实体的温度读数。每个信号大约有600个实体。一个示例事件应该是这样的。

代码语言:javascript
复制
{
    "SignalId": "1",
    "EntityId": "1",
    "Temperature": 78   
}

是从一个参考数据blob中读取每个实体的阈值,该blob看起来如下所示。

代码语言:javascript
复制
 [{
     "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
    }]
 }]

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

代码语言:javascript
复制
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小时。插入的行应该包含与窗口中的最后一个事件相关的数据。

我刚接触过Stream和to,老实说,我并不完全理解窗口功能是如何工作的。这是我的问题..。

  1. 如果我连续得到坏事件(温度高于阈值) 30分钟,然后得到一个好事件,那么是否有可能编写一个查询,使一个新窗口从下一个坏事件开始?
  2. 是否可以为窗口中的最后一个事件选择数据?我试着使用LAG()和LAST(),但是它给了我一个编译错误,它说“不能在没有聚合函数的情况下使用GROUP”。问题是,我不需要聚合函数,只需要最后一个事件值。

我被困在这个问题上已经好几天了,任何帮助都是非常感谢的。

另外,这是我的第一个问题,所以请原谅我的愚蠢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-26 20:29:21

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

代码语言:javascript
复制
SELECT
    Entity,
    max(Reading) MaxReading
INTO
    [YourOutputAlias]
FROM
    [YourInputAlias]
group by
    Entity,
    SlidingWindow(hour,1)
having
    MaxReading < 100
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41180285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档