在azure stream analytics的滚动窗口中查找5分钟内至少出现3分钟的查询数

ipakzgxi  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(343)

我需要找到客户端出现在5分钟内至少3分钟在azure流分析滚动窗口。
下面的代码可以找到出现在5分钟窗口中的人数。

SELECT  
        apMac,
        COUNT(Distinct([clientMac])) AS [numberofClientsPerFiveMinutes],
        AVG(rssi) AS [rssiAverage],
        System.TimeStamp AS [EventTimestampUTC],
        UDF.melbournetime(System.TimeStamp) AS [EventTimestampLocalTime]
INTO    [meraki-aggregated-powerbi]
FROM    [ExplodedData]
GROUP BY    apMac,
            TumblingWindow(Minute, 5)

不过,我想统计一下在这个名单上至少有3分钟的人。使用它们的第一次出现和最后一次出现(基于它们的查询时间)。
问题是我不知道流分析中的代码样式

5w9g7ksd

5w9g7ksd1#

我用datediff找到了如下的解决方案。你需要按一个人分组,然后从最小时间中减去最大值。

SELECT
        apmac,
        COUNT(DISTINCT ([clientmac])) AS [SeenPassengerNumberInTimeRange],
        ABS(DATEDIFF(MINUTE, MAX(seenTimeLocal), MIN(seenTimeLocal))) AS RangeTimeMinute,
        EventTimestampLocalTime AS EventTimestampLocalDateTime
    FROM [explodeddata]
    GROUP BY 
        apmac,
        EventTimestampLocalTime,
        Tumblingwindow(minute, 5) -- 5 min window size
    HAVING 
     ABS(DATEDIFF(MINUTE, MAX(seenTimeLocal), MIN(seenTimeLocal))) >= 2 -- at least 2 min

)

相关问题