0

我需要在 Azure 流分析中找到在 5 分钟翻滚窗口中至少出现 3 分钟的客户端。

下面的代码可以找到 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 分钟的人。使用他们的第一次出现和最后一次出现(基于他们的查询时间)。

问题是我不知道流分析中的代码样式

4

1 回答 1

1

我找到了 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

)

于 2020-06-11T07:46:36.297 回答