以下Stream Analytics
Query
按10秒Sliding Window
间隔计算按IP地址分组的事件数:
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
。
10个简单对象的以下JSON
有效负载,在10秒窗口内间隔精确1秒,发布到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
的某种boot-strapper / warm-up / offset功能是否存在差异导致第一个有效负载被有效忽略?
答案 0 :(得分:1)
我的猜测是你按照以下顺序与它互动:
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/