我需要找到在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分钟内在此列表中的人员。使用他们的第一次出现和最后一次出现(基于他们的查询时间)。
问题是我不知道Stream Analytics中的代码样式
我发现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
)