Partilhar via


Introdução às funções de janelas de Análise de Fluxos

Em cenários de fluxo temporal, um padrão comum é realizar operações sobre os dados contidos em janelas temporais. O Stream Analytics tem suporte nativo para funções de janela, por isso pode criar trabalhos complexos de processamento de fluxos com esforço mínimo.

Existem cinco tipos de janelas temporais:

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

Todas as operações de 'windowing' mostram resultados no final da janela. Quando começas um trabalho de análise de fluxos, podes especificar a hora de início da saída do trabalho. O sistema recupera automaticamente eventos anteriores nos fluxos recebidos para gerar a primeira janela no momento especificado. Por exemplo, quando começas com a opção Agora , começa a emitir dados imediatamente. A saída da janela é um único evento baseado na função agregada utilizada. O evento de saída tem o carimbo temporal do fim da janela e todas as funções da janela são definidas com um comprimento fixo.

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

Janela de tombo

Use funções de janela Tumbling para segmentar um fluxo de dados em segmentos de tempo distintos e aplicar uma função sobre eles.

Os principais fatores diferenciadores de uma janela deslizante são:

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

Diagrama que mostra um exemplo de janela de deslizamento do Stream Analytics.

Aqui estão os dados de entrada do exemplo:

Carimbo DataDeCriação TimeZone
1 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 Horário Padrão do Pacífico
4 2021-10-26T10:15:06 Hora Padrão do Pacífico
... ... ...

Aqui está o exemplo de consulta:

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

Aqui está a saída de exemplo:

WindowEndTime TimeZone Contar
2021-10-26T10:15:10 Hora Padrão do Pacífico (PST) 5
2021-10-26T10:15:20 Hora Padrão do Pacífico (PST) 2
2021-10-26T10:15:30 Horário Padrão do Pacífico (PST) 4

Janela deslizante

As funções de janela deslizante avançam no tempo em intervalos fixos. Pode ser fácil pensar nelas como janelas rotativas que podem se sobrepor e serem emitidas com mais frequência do que a duração da janela. Os eventos podem pertencer a mais do que um conjunto de resultados de janelas de salto. Para tornar uma janela saltante igual a uma janela deslizante, especifique o tamanho do salto para ser igual ao tamanho da janela.

Diagrama que mostra um exemplo da janela deslizante.

Aqui estão os dados de exemplo:

Marca DataDeCriação Tópico
1 2021-10-26T10:15:01 Serviço de streaming
5 2021-10-26T10:15:03 Serviço de streaming
4 2021-10-26T10:15:06 Serviço de streaming
... ... ...

Aqui está o exemplo de consulta:

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

Aqui está a saída de exemplo:

WindowEndTime Tópico Contar
2021-10-26T10:15:10 Serviço de streaming 5
2021-10-26T10:15:15 Serviço de streaming 3
2021-10-26T10:15:20 Serviço de streaming 2
2021-10-26T10:15:25 Serviço de streaming 4
2021-10-26T10:15:30 Serviço de streaming 4

Janela deslizante

As janelas deslizantes, ao contrário das janelas de deslizamento ou salto, geram eventos apenas para os momentos em que o conteúdo da janela se altera. Ou seja, quando um evento entra ou sai da janela. Assim, cada janela tem pelo menos um evento. Semelhante às janelas saltitantes, os eventos podem pertencer a mais de uma janela deslizante.

Diagrama que mostra um exemplo de janela deslizante.

Aqui estão os dados de entrada de exemplo:

Selo DataDeCriação Tópico
1 2021-10-26T10:15:10 Serviço de streaming
5 2021-10-26T10:15:12 Serviço de streaming
9 2021-10-26T10:15:15 Serviço de streaming
7 2021-10-26T10:15:15 Serviço de streaming
8 2021-10-26T10:15:27 Serviço de streaming

Aqui está o exemplo de consulta:

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 Contar
2021-10-26T10:15:15 Serviço de streaming 4
2021-10-26T10:15:20 Serviço de streaming 3

Janela da sessão

As funções da janela de sessão agrupam eventos que chegam em horários semelhantes. Filtram períodos de tempo sem dados. A função janela de sessão tem três parâmetros principais:

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

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

Uma janela de sessão começa quando ocorre o primeiro evento. Se outro evento ocorrer dentro do tempo especificado a partir do último evento ingerido, a janela estende-se para incluir o novo evento. Caso contrário, se não ocorrerem eventos durante o timeout, a janela fecha-se nesse timeout.

Se os eventos continuarem a ocorrer dentro do tempo especificado, a janela da sessão prolonga-se até atingir a duração máxima. Os intervalos máximos de verificação de duração têm o mesmo tamanho da duração máxima especificada. Por exemplo, se a duração máxima for 10, então as verificações se a janela exceder a duração máxima acontecem em t = 0, 10, 20, 30, e assim sucessivamente.

Quando 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. Esta particionação é útil para casos em que precisas de janelas de sessão diferentes para diferentes utilizadores ou dispositivos.

Aqui estão os dados de entrada de exemplo:

Carimbo DataDeCriação Tópico
1 2021-10-26T10:15:01 Serviço de streaming
2 2021-10-26T10:15:04 Serviço de streaming
3 2021-10-26T10:15:13 Serviço de streaming
... ... ...

Aqui está o exemplo de consulta:

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

Saída:

WindowEndTime Tópico Contar
2021-10-26T10:15:09 Serviço de streaming 2
2021-10-26T10:15:24 Serviço de streaming 4
2021-10-26T10:15:31 Serviço de streaming 2
2021-10-26T10:15:39 Serviço de streaming 1

Janela de instantâneo

Snapshot janelas agrupam eventos que têm a mesma marca temporal. Ao contrário de outros tipos de janela, que requerem uma função de janela específica (como SessionWindow()), pode aplicar uma janela de instantâneo adicionando System.Timestamp() à GROUP BY cláusula.

Diagrama que mostra uma janela de snapshot de exemplo do Steam Analytics.

Aqui estão os dados de entrada de exemplo:

Carimbo DataDeCriação Tópico
1 2021-10-26T10:15:04 Serviço de streaming
2 2021-10-26T10:15:04 Serviço de streaming
3 2021-10-26T10:15:04 Serviço de streaming
... ... ...

Aqui está o exemplo de consulta:

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

Aqui está a saída de exemplo:

WindowEndTime Tópico Contar
2021-10-26T10:15:04 Serviço de streaming 4
2021-10-26T10:15:10 Serviço de streaming 2
2021-10-26T10:15:13 Serviço de streaming 1
2021-10-26T10:15:22 Serviço de streaming 2

Próximos passos

Consulte os seguintes artigos: