流分析查询窗口如何工作以及如何避免双行?

时间:2016-10-16 09:09:38

标签: azure azure-stream-analytics

我在流分析中有一个查询来计算每小时的请求数。因此,我有一个原因,我收到消息“预计会有一个窗口”。所以我添加了一个翻滚窗口,但我不明白它是如何工作的。

group by
    datetimefromparts(year(r.starttime), month(r.starttime), day(r.starttime), datepart(hh, r.starttime),0,0,0),
    r.tags,
    r.IsMobile,
    tumblingwindow(hh, 1)

当我选择hh时,我得到了这11个结果:

requestdate                 tags    ismobilecount   summary
2016-10-03T21:00:00.000Z    A       0       6       2016-10-03T21:00:00.000ZA06
2016-10-03T21:00:00.000Z    B       0       1       2016-10-03T21:00:00.000ZB01
2016-10-03T22:00:00.000Z    A       0       20      2016-10-03T22:00:00.000ZA020
2016-10-03T21:00:00.000Z    B       0       1       2016-10-03T21:00:00.000ZB01
2016-10-03T22:00:00.000Z    B       0       14      2016-10-03T22:00:00.000ZB014
2016-10-03T21:00:00.000Z    A       1       2       2016-10-03T21:00:00.000ZA12
2016-10-03T21:00:00.000Z    B       1       1       2016-10-03T21:00:00.000ZB11
2016-10-03T21:00:00.000Z    B       1       1       2016-10-03T21:00:00.000ZB11
2016-10-03T21:00:00.000Z    A       1       1       2016-10-03T21:00:00.000ZA11
2016-10-03T22:00:00.000Z    A       1       15      2016-10-03T22:00:00.000ZA115
2016-10-03T22:00:00.000Z    B       1       22      2016-10-03T22:00:00.000ZB122

但是当我选择ddtumblingwindow(hh, 1))时,我得到了这些结果:

requestdate                  tags ismobile  count   summary
2016-10-16T21:00:00.0000000Z    B       1       45      2016-10-16T21:00:00.0000000ZB145 
2016-10-16T22:00:00.0000000Z    A       0       51      2016-10-16T22:00:00.0000000ZA051 
2016-10-16T22:00:00.0000000Z    A       1       49      2016-10-16T22:00:00.0000000ZA149 
2016-10-16T22:00:00.0000000Z    B       0       41      2016-10-16T22:00:00.0000000ZB041 
2016-10-16T22:00:00.0000000Z    B       1       39      2016-10-16T22:00:00.0000000ZB139 
2016-10-16T23:00:00.0000000Z    A       0       3       2016-10-16T23:00:00.0000000ZA03  
2016-10-16T23:00:00.0000000Z    A       0       39      2016-10-16T23:00:00.0000000ZA039 
2016-10-16T23:00:00.0000000Z    A       1       2       2016-10-16T23:00:00.0000000ZA12  
2016-10-16T23:00:00.0000000Z    A       1       38      2016-10-16T23:00:00.0000000ZA138 
2016-10-16T23:00:00.0000000Z    B       0       1       2016-10-16T23:00:00.0000000ZB01  
2016-10-16T23:00:00.0000000Z    B       0       46      2016-10-16T23:00:00.0000000ZB046 
2016-10-16T23:00:00.0000000Z    B       1       29      2016-10-16T23:00:00.0000000ZB129 
2016-10-16T23:00:00.0000000Z    B       1       4       2016-10-16T23:00:00.0000000ZB14  
2016-10-17T00:00:00.0000000Z    A       0       42      2016-10-17T00:00:00.0000000ZA042 
2016-10-17T00:00:00.0000000Z    A       1       36      2016-10-17T00:00:00.0000000ZA136 
2016-10-17T00:00:00.0000000Z    B       0       39      2016-10-17T00:00:00.0000000ZB039 
2016-10-17T00:00:00.0000000Z    B       1       45      2016-10-17T00:00:00.0000000ZB145 
2016-10-17T01:00:00.0000000Z    A       0       41      2016-10-17T01:00:00.0000000ZA041 

当我开始工作几天时,我每天23:00:00h得到8排。

但我希望每小时只有4行。我怎么解决这个问题?有人可以解释一下这是如何工作的,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我相信这是因为你的标签总是有A和B.这看起来像是预期的行为,因为每个小时你都有A和B.当有更多时,你会得到与IsMobile相同的东西小时组中的一个不同的值。

因此,基于Tags和IsMobile每小时都有两个可能的选择,如果当时有以下事件,则每小时最多可以有四行:

Tag: A, IsMobile: 0
Tag: A, IsMobile: 1
Tag: B, IsMobile: 0
Tag: B, IsMobile: 1