2016-09-02 38 views
0

以下Stream AnalyticsQuery计数的事件的数量,按IP地址进行分组,在10秒的时间间隔Sliding Window流分析事件集线器输出

Select 
    Min(Time) as FirstHit, 
    Max(Time) as LastHit, 
    Count(*) as Total, 
    IPAddress 
From 
    Input Partition By PartitionId TimeStamp By Time 
Group By 
    SlidingWindow(second, 10), IPAddress, PartitionId 
Having 
    Total >= 10 

所得聚合输出到Event Hub

以下JSON有效载荷10个简单对象的,间隔开的精确为1秒开,10秒窗口内被发布​​到Stream Analytics,由上述Query进行处理:

[{ 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:01" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:02" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:03" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:04" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:05" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:06" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:07" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:08" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:09" 
}, { 
    "IPAddress": "192.168.0.10", 
    "Time": "2016-09-02T11:40:10" 
}] 

两个Stream Analytics作业和Event Hub实例被新实例化。

Stream Analytics不输出相应的事件,尽管事件有效负载符合Query标准。

但是,在发出第二个请求后,将相同的有效负载发布到Stream Analytics,使用正确的元数据创建输出事件。

我的配置是否存在差异,或Stream Analytics的某种引导 - 剥离器/预热/偏移功能导致第一个有效负载被有效忽略?

回答

1

我的猜测是,你用它按以下顺序进行交互:

  1. 事件被发送到集线器。
  2. StreamAnalytics作业从当前时间开始。
  3. 其他事件发送到集线器。

作为EventHub流,它不具有的当前时间的概念,StreamAnalytics需要正确的偏移量开始处理事件。

如果您向我们提供更多详情,我们可以进一步确认或进一步调查问题。

从我的评论中,从门户网站StreamAnalytics的输入刀片中,您可以从输入中采样数据并将其提供给查询,以确保您期望的结果在那里(时间窗口将被忽略,但您可以首先从输入中抽取想要的时间窗口)。

此外,当您指定TIMESTAMP BY子句时,请确保您的输入配置了无序的事件容差,以防您的订单无法得到保证(https://msdn.microsoft.com/en-us/library/azure/mt674682.aspx)。

对迟到的更多细节/输出为输入顺序设置:https://blogs.msdn.microsoft.com/streamanalytics/2015/05/17/out-of-order-events/

+0

的分析数据的作业,从当前时间开始。所有发送到事件中心的事件都将被初始化为时间属性,该时间属性设置为Stream Analytics开始时间和当前时间之间的值。让我知道你需要什么细节,我会很乐意提供。 –

+0

@PaulMooney我现在有点忙,但看看这个:http:// stackoverflow。com/questions/30646588/can-a-date-and-time-be-specified-when-sending-data-to-azure-event-hub我不确定你可以重写消息的时间。一个人认为尝试只是从一个较旧的日期开始工作,看看你是否得到任何输出。 –

+0

诊断的另一种方法是从门户采样输入数据并在StreamAnalytics查询的测试刀片中处理它,并查看输出以确保您所期望的消息与查询匹配。 –