Может кто-нибудь помочь мне получить следующий сценарий с примером запроса. Я добавил свой пример кода в конце, но он никогда не работал. Я новичок в потоковой аналитике, и ваша помощь будет принята с благодарностью.
1) Получите последнее событие входящей группы ввода по CARID (по метке времени)
2) Считайте скорость последнее событие для каждого CARID
3) Проверьте, была ли скорость последнего события (каждого CARID) с потоком входных данных, полученной за последние 12 секунд
4) Если скорость последнего события меньше, затем отправьте на выход, в противном случае не обрабатывайте последнее событие (опять же, оно должно быть по CARID)
Я использовал функцию TubmlingWindow для получения потока событий за последние секунды.
Здесь это пример кода, который я использовал:
WITH LastInWindow AS
(
SELECT
CARID,
MAX(cast(timestamp as datetime)) AS LastEventTime
FROM
IoTHubInput
GROUP BY
TumblingWindow(second, 12) , CARID
),
InputLog AS
(
SELECT
CARID,
max(Speed) speed
FROM
IoTHubLog
GROUP BY
TumblingWindow(second, 12),timestamp,CARID
)
SELECT
IoTHubLog.CARID,
IoTHubLog.Speed
INTO Outputlog
FROM
IoTHubLog
INNER JOIN LastInWindow
ON DATEDIFF(second, IoTHubLog, LastInWindow) BETWEEN 0 AND 12
AND cast( IoTHubLog.timestamp as datetime)=LastInWindow.LastEventTime
AND IoTHubLog.CARID = LastInWindow.CARID
INNER JOIN InputLog
ON DATEDIFF(second, IoTHubLog, InputLog) BETWEEN 0 AND 12
AND cast(IoTHubLog.timestamp as datetime)> cast( InputLog.timestamp as datetime)
AND IoTHubLog.CARID = InputLog.CARID
AND InputLog.speed > IoTHubLog.speed
GROUP BY
TumblingWindow(second, 1), IoTHubLog.CARID