Compartilhar via


OVER (Azure Stream Analytics)

Para cada linha, a cláusula OVER determina o agrupamento de linhas antes que uma função de agregação ou análise associada seja aplicada.

Você pode usar a cláusula OVER em qualquer lugar em que uma função escalar seja permitida. Por exemplo, você pode usar a cláusula OVER nas cláusulas SELECT, WHERE, JOIN ou GROUP BY.

A cláusula OVER agrupa linhas diretamente da entrada de consulta. Ele não é afetado por predicados na cláusula WHERE, condições de junção na cláusula JOIN ou condições de agrupamento na cláusula GROUP BY.

Atualmente, as seguintes funções de agregação têm suporte com a cláusula OVER:

  • SUM
  • AVG
  • MIN
  • MAX

Sintaxe

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

Argumentos

<Cláusula PARTITION BY>

Especifica que somente as linhas com o mesmo <partition_key> serão consideradas para a função de agregação ou analítica.

<Cláusula LIMIT DURATION>

Especifica quanto histórico da linha atual está incluído no grupo. Consulte DATEDIFF para uma descrição detalhada das unidades com suporte e suas abreviaturas.

<CLÁUSULA WHEN>

Especifica a condição booliana para as linhas a serem incluídas no grupo.

Comentários gerais

A aplicação de uma função agregada ou analítica com OVER no conjunto de resultados de uma função de janela pode produzir resultados inesperados. As funções de janela alteram o carimbo de data/hora dos eventos, pois todas as operações de janela geram evento no final da janela. O carimbo de data/hora atual de um evento pode ser acessado com system.timestamp(), após uma operação de janela, ele será diferente do atributo de hora do evento original.

Exemplos

Compute a temperatura média nos últimos 5 minutos, por sensor:

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

Gere um alerta se o recurso não estiver íntegro na última hora:

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

Consulte Também

Funções analíticas
Funções agregadas