Compreender as funções da janela

Concluído

Um objetivo comum do processamento de fluxo é agregar eventos em intervalos temporais, ou janelas. Por exemplo, para contar o número de publicações nas redes sociais por minuto ou para calcular a precipitação média por hora.

O Azure Stream Analytics inclui suporte nativo para cinco tipos de funções de janela temporal. Essas funções permitem definir intervalos temporais nos quais os dados são agregados em uma consulta. As funções de janela suportadas são Tumbling, Hopping, Sliding, Session e Snapshot.

Tombamento

As funções de janela de queda segmentam um fluxo de dados em uma série contígua de segmentos de tempo de tamanho fixo e não sobreposição e operam contra eles. Os eventos não podem pertencer a mais de uma janela de tombo.

A diagram illustrating a stream with a series of events mapped into 1-minute tumbling windows.

O exemplo de janela Tumbling, representado pela consulta a seguir, localiza o valor máximo de leitura em cada janela de um minuto. As funções de janela são aplicadas em trabalhos do Stream Analytics usando a cláusula GROUP BY da sintaxe da consulta. A GROUP BY cláusula na consulta a seguir contém a TumblingWindow() função, que especifica um tamanho de janela de um minuto.

SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY TumblingWindow(minute, 1)

Salto

As funções de janela de salto modelam janelas sobrepostas programadas, avançando no tempo por um período fixo. É mais fácil pensar neles como janelas de tombamento que podem se sobrepor e ser emitidas com mais frequência do que o tamanho da janela. Na verdade, as janelas de tombo são simplesmente uma janela saltitante que hop é igual ao seu size. Quando você usa janelas de salto, os eventos podem pertencer a mais de um conjunto de resultados de janela.

The diagram illustrates a stream with a series of events captured in 60 second hopping windows that occur every 30 seconds.

Para criar uma janela de salto, você deve especificar três parâmetros. O primeiro parâmetro indica a unidade de tempo, como segundo, minuto ou hora. O parâmetro a seguir define o tamanho da janela, que designa quanto tempo cada janela dura. O parâmetro final necessário é o tamanho do salto, que especifica o quanto cada janela avança em relação à anterior. Pode também ser utilizado um quarto parâmetro opcional que indique o tamanho do deslocamento.

A consulta a seguir demonstra o uso de um HoppingWindow() onde o timeunit está definido como second. O windowsize é de 60 segundos, e o é de hopsize 30 segundos. Esta consulta gera um evento a cada 30 segundos contendo o valor máximo de leitura que ocorreu nos últimos 60 segundos.

SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY HoppingWindow(second, 60, 30)

Deslizamento

As janelas deslizantes geram eventos para pontos no tempo em que o conteúdo da janela realmente muda. Este modelo de função limita o número de janelas que precisam ser consideradas. O Azure Stream Analytics produz eventos apenas para os pontos no tempo em que um evento entrou ou saiu da janela. Como tal, cada janela contém um mínimo de um evento. Os eventos nas janelas deslizantes podem pertencer a mais de uma janela deslizante, semelhante às janelas de salto.

The diagram illustrates a stream with a series of events mapped into sliding windows of 1 minute.

A consulta a seguir usa a SlidingWindow() função para encontrar o valor máximo de leitura em cada janela de um minuto em que ocorreu um evento.

SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SlidingWindow(minute, 1)

Sessão

As funções da janela de sessão agrupam eventos que chegam em momentos semelhantes, filtrando períodos de tempo em que não há dados. Ele tem três parâmetros principais: tempo limite, duração máxima e chave de particionamento (opcional).

The diagram illustrates a stream with a series of events mapped into session windows with a 20-second timeout and a maximum duration of 60 seconds.

A ocorrência do primeiro evento inicia uma janela de sessão. Suponha que outro evento ocorra dentro do tempo limite especificado a partir do último evento ingerido. Nesse caso, a janela será estendida para incorporar o novo evento. No entanto, se nenhum outro evento ocorrer dentro do período de tempo limite especificado, a janela será fechada no tempo limite. Se os eventos continuarem acontecendo dentro do tempo limite especificado, a janela da sessão se estenderá até que a duração máxima seja atingida.

A consulta a seguir mede a duração da sessão do usuário criando dados de SessionWindow fluxo de cliques com um timeoutsize de 20 segundos e um maximumdurationsize de 60 segundos.

SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SessionWindow(second, 20, 60)

Instantâneo

As janelas de instantâneo agrupam eventos por valores idênticos de carimbo de data/hora. Ao contrário de outros tipos de janelas, uma função de janela específica não é necessária. Você pode empregar uma janela de instantâneo especificando a System.Timestamp() função para a cláusula da GROUP BY consulta.

The diagram illustrates a stream with a series of events mapped into snapshot windows.

Por exemplo, a consulta a seguir localiza o valor máximo de leitura para eventos que ocorrem exatamente ao mesmo tempo.

SELECT System.TimeStamp() AS WindowTime,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY System.Timestamp()

System.Timestamp() é considerado na GROUP BY cláusula como uma definição de janela de instantâneo porque agrupa eventos em uma janela com base na igualdade de carimbos de data/hora.