Завершение

✅ Поток событий Azure Stream Analytics ✅ Fabric

Для каждой строки предложение OVER определяет группирование строк перед применением связанной статистической или аналитической функции.

Предложение OVER можно использовать в любом месте, где разрешена скалярная функция. Например, можно использовать предложение OVER в предложениях SELECT, WHERE, JOIN или GROUP BY.

Предложение OVER группирует строки непосредственно из входных данных запроса. Это не влияет на предикаты в предложении WHERE, условия соединения в предложении JOIN или условия группировки в предложении GROUP BY.

В настоящее время в предложении OVER поддерживаются следующие агрегатные функции:

  • СУММА
  • СРЕДНЕЕ
  • МИН
  • МАКС

Синтаксис

OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])

<PARTITION BY clause> ::== PARTITION BY partition_key, ... [n]

<LIMIT DURATION clause> ::== LIMIT DURATION (unit, length)

<WHEN clause> ::== WHEN boolean_expression

Аргументы

<Предложение PARTITION BY>

Указывает, что для агрегатной или аналитической функции будут считаться только строки с тем же <partition_key> .

<Предложение LIMIT DURATION>

Указывает, сколько журналов из текущей строки включается в группу. Дополнительные сведения о поддерживаемых единицах и их сокращениях см. в РАЗДЕЛЕ DATEDIFF .

<ПРЕДЛОЖЕНИЕ WHEN>

Указывает логическое условие для строк, которые будут включены в группу.

Общие замечания

Применение статистической или аналитической функции с помощью OVER в результирующем наборе функции окна может привести к непредвиденным результатам. Функции окна изменяют метку времени событий, так как каждая операция окна выводит событие в конце окна. Текущая метка времени события может быть доступна с помощью system.timestamp(), после операции окна она будет отличаться от исходного атрибута времени события.

Примеры

Вычислить среднюю температуру за последние 5 минут на датчик:

SELECT AVG(temperature) OVER (PARTITION BY id LIMIT DURATION (minute, 5))
FROM input

Создайте оповещение, если ресурс был неработоспособным в течение последнего часа:

SELECT 1 AS alert
FROM input
WHERE MAX(healthy) OVER (PARTITION BY id LIMIT DURATION (hour, 1)) = 0

См. также

Аналитические функции
агрегатные функции