Compartilhar via


Introdução às funções de janela do Stream Analytics

Em cenários de streaming de tempo, um padrão comum é executar operações nos dados contidos em janelas temporais. O Stream Analytics tem suporte nativo para funções de janela, para que você possa criar trabalhos complexos de processamento de fluxo com o mínimo de esforço.

Há cinco tipos de janelas temporais:

Use as funções de janela na cláusula GROUP BY da sintaxe de consulta em seus trabalhos do Stream Analytics. Você também pode agregar eventos em várias janelas usando a função Windows().

Os resultados de todas as operações de janelamento são produzidos no final da janela. Ao iniciar um trabalho de análise de fluxo, você pode especificar a hora de início da saída do trabalho. O sistema busca automaticamente eventos anteriores nos fluxos de entrada para gerar a primeira janela no momento especificado. Por exemplo, quando você começa com a opção Agora , ela começa a emitir dados imediatamente. A janela gera um único evento baseado na função de agregação utilizada. O evento de saída tem o timestamp do final da janela e todas as funções de janela são definidas com um comprimento fixo.

Diagrama que mostra o conceito de funções de janela do Stream Analytics.

Janela Deslizante

Use funções de janela em cascata para segmentar um fluxo de dados em segmentos de tempo distintos e executar uma função em relação a eles.

Os principais diferenciadores de uma janela deslizante são:

  • Eles não se repetem.
  • Eles não se sobrepõem.
  • Um evento não pode pertencer a mais de uma janela deslizante.

Diagrama que mostra um exemplo de janela em cascata do Stream Analytics.

Aqui estão os dados de entrada para o exemplo:

Selo CreatedAt TimeZone
1 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 Hora Padrão do Pacífico (HPP)
4 2021-10-26T10:15:06 Horário Padrão do Pacífico (PST)
... ... ...

Aqui está a consulta de exemplo:

SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)

Veja o exemplo de saída:

Hora de Término da Janela TimeZone Contagem
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 Horário Padrão do Pacífico (PST) 2
2021-10-26T10:15:30 Horário Padrão do Pacífico (PST) 4

Janela de Salto

As funções de janela hopping avançam no tempo por um período fixo. Pode ser fácil pensar neles como janelas deslizantes que podem se sobrepor e serem emitidas com mais frequência do que o tamanho da janela. Os eventos podem pertencer a mais de um conjunto de resultados de janela deslizante. Para transformar uma janela de salto em uma janela deslizante, especifique que o tamanho do salto seja igual ao tamanho da janela.

Diagrama que mostra um exemplo da janela deslizante.

Aqui estão os dados de exemplo:

Selo CreatedAt Tópico
1 2021-10-26T10:15:01 Transmissão ao vivo
5 2021-10-26T10:15:03 Transmissão ao vivo
4 2021-10-26T10:15:06 Transmissão ao vivo
... ... ...

Aqui está a consulta de exemplo:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)

Veja o exemplo de saída:

WindowEndTime Tópico Contagem
2021-10-26T10:15:10 Transmissão ao vivo 5
2021-10-26T10:15:15 Transmissão ao vivo 3
2021-10-26T10:15:20 Transmissão ao vivo 2
2021-10-26T10:15:25 Transmissão ao vivo 4
2021-10-26T10:15:30 Transmissão ao vivo 4

Janela Deslizante

Janelas deslizantes , ao contrário das janelas em cascata ou de salto, geram eventos somente para pontos no tempo em que o conteúdo da janela realmente é alterado. Em outras palavras, quando um evento entra ou sai da janela. Portanto, cada janela tem pelo menos um evento. Como nas janelas de salto, os eventos podem pertencer a mais de uma janela deslizante.

Diagrama que mostra um exemplo de uma janela deslizante.

Aqui estão os dados de entrada de exemplo:

Selo CreatedAt Tópico
1 2021-10-26T10:15:10 Transmissão ao vivo
5 2021-10-26T10:15:12 Transmissão ao vivo
9 2021-10-26T10:15:15 Transmissão ao vivo
7 2021-10-26T10:15:15 Transmissão ao vivo
8 2021-10-26T10:15:27 Transmissão ao vivo

Aqui está a consulta de exemplo:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3

Saída:

WindowEndTime Tópico Contagem
2021-10-26T10:15:15 Transmissão ao vivo 4
2021-10-26T10:15:20 Transmissão ao vivo 3

Janela de sessão

Funções de janelas de sessão agrupam eventos que chegam em horários semelhantes. Eles filtram períodos de tempo em que não há dados. A função da janela de sessão tem três parâmetros principais:

  • Intervalo
  • Duração máxima
  • Chave de particionamento (opcional).

Diagrama que mostra uma janela de sessão do Stream Analytics de exemplo.

Uma janela de sessão começa quando o primeiro evento ocorre. Se outro evento ocorrer dentro do tempo limite especificado do último evento ingerido, a janela se estenderá para incluir o novo evento. Caso contrário, se nenhum evento ocorrer dentro do tempo limite, a janela será fechada no tempo limite.

Se os eventos continuarem ocorrendo dentro do tempo limite especificado, a janela da sessão continuará se estendendo até que a duração máxima seja atingida. Os intervalos máximos de verificação de duração são do mesmo tamanho que a duração máxima especificada. Por exemplo, se a duração máxima for 10, as verificações se a janela exceder a duração máxima ocorrerão em t = 0, 10, 20, 30 e assim por diante.

Quando você fornece uma chave de partição, a função agrupa os eventos pela chave e aplica a janela de sessão a cada grupo de forma independente. Esse particionamento é útil para casos em que você precisa de janelas de sessão diferentes para diferentes usuários ou dispositivos.

Aqui estão os dados de entrada de exemplo:

Selo CreatedAt Tópico
1 2021-10-26T10:15:01 Transmissão ao vivo
2 2021-10-26T10:15:04 Transmissão ao vivo
3 2021-10-26T10:15:13 Transmissão ao vivo
... ... ...

Aqui está a consulta de exemplo:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)

Saída:

Hora de Término da Janela Tópico Contagem
2021-10-26T10:15:09 Transmissão ao vivo 2
2021-10-26T10:15:24 Transmissão ao vivo 4
2021-10-26T10:15:31 Transmissão ao vivo 2
2021-10-26T10:15:39 Transmissão ao vivo 1

Janela de instantâneo

Instantâneo agrupa eventos de janelas que têm o mesmo carimbo de data/hora. Ao contrário de outros tipos de janela, que exigem uma função de janela específica (como SessionWindow()), você pode aplicar uma janela de instantâneo adicionando System.Timestamp() à GROUP BY cláusula.

Diagrama que mostra uma janela de instantâneo do Steam Analytics de exemplo.

Aqui estão os dados de entrada de exemplo:

Selo CreatedAt Tópico
1 2021-10-26T10:15:04 Transmissão ao vivo
2 2021-10-26T10:15:04 Transmissão ao vivo
3 2021-10-26T10:15:04 Transmissão ao vivo
... ... ...

Aqui está a consulta de exemplo:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Veja o exemplo de saída:

Hora de Término da Janela Tópico Contagem
2021-10-26T10:15:04 Transmissão ao vivo 4
2021-10-26T10:15:10 Transmissão ao vivo 2
2021-10-26T10:15:13 Transmissão ao vivo 1
2021-10-26T10:15:22 Transmissão ao vivo 2

Próximas etapas

Veja os artigos a seguir: