Partilhar via


OVER (Azure Stream Analytics)

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

Pode utilizar a cláusula OVER em qualquer lugar onde seja permitida uma função escalar. Por exemplo, pode utilizar a cláusula OVER nas cláusulas SELECT, WHERE, JOIN ou GROUP BY.

A cláusula OVER agrupa linhas diretamente a partir da entrada da consulta. Não é afetada por predicados na cláusula WHERE, condições de associação na cláusula JOIN ou condições de agrupamento na cláusula GROUP BY.

Atualmente, as seguintes funções de agregação são suportadas 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 apenas as linhas com o mesmo <partition_key> serão consideradas para a função de agregação ou análise.

<Cláusula LIMIT DURATION>

Especifica a quantidade de histórico da linha atual incluída no grupo. Veja DATEDIFF para obter uma descrição detalhada das unidades suportadas e das respetivas abreviaturas.

<CLÁUSULA WHEN>

Especifica a condição booleana para que as linhas sejam incluídas no grupo.

Observações Gerais

Aplicar 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, uma vez que todas as operações de janela produzem eventos no final da janela. O carimbo de data/hora atual de um evento pode ser acedido com system.timestamp(), após uma operação de janela, será diferente do atributo de hora do evento original.

Exemplos

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

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

Emitir um alerta se o recurso tiver estado em mau estado de funcionamento durante a ú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 de Análise
Funções de Agregação