Compartilhar via


Janela instantâneo (Azure Stream Analytics)

Janelas de Instantâneos agrupam eventos 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() à cláusula GROUP BY.

O diagrama a seguir ilustra um fluxo com uma série de eventos e como eles são mapeados para instantâneo janelas.

Diagrama de janela de instantâneo

System.Timestamp() pode ser considerado na cláusula GROUP BY como uma coluna de chave ou uma definição de janela instantâneo porque agrupa eventos em uma janela com base na igualdade de carimbos de data/hora. Quando combinado com outra função de janela, System.Timestamp() é tratado como uma chave e não como uma definição de janela. System.Timestamp() não produz um erro quando usado com outras funções de janela, ao contrário de quando várias funções de janela são usadas na cláusula GROUP BY. Usar System.Timestamp() e uma função de janela no GROUP BY pode ser útil para agrupar os resultados em lote.

Qualquer expressão que contenha System.Timestamp() não é considerada uma janela. Por exemplo, GROUP BY DATEPART(minute, System.Timestamp()) falha com o erro "uma janela deve ser especificada".

Sintaxe

System.Timestamp()

Exemplos

Exemplo básico

O exemplo a seguir retorna a contagem de tweets com o mesmo tipo de tópico que ocorre exatamente ao mesmo tempo:

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

Exemplo de janela em cascata instantâneo

Um uso comum para instantâneo janelas é agregar eventos depois que eles tiverem sido agrupados em um único carimbo de data/hora por meio de uma função de janela anterior, como TumblingWindow abaixo.

O exemplo a seguir retorna a contagem de tweets com o mesmo tipo de tópico pelo mesmo usuário em intervalos de 30 minutos:

WITH PerInterval AS (
    SELECT Topic, User, COUNT(*)
    FROM TwitterStream TIMESTAMP BY CreatedAt
    GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval

Para localizar o número de usuários e o total de tweets por tópico dentro do mesmo intervalo, você pode usar o resultado da consulta anterior. Devido aos resultados da janela em cascata, todos terão carimbos de data/hora alinhados ao limite de 30 minutos, você pode usar uma janela instantâneo para retornar eventos em cada limite, pois todos eles têm o mesmo valor de carimbo de data/hora.

SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()

A consulta anterior retornou o número de usuários e o total de tweets por tópico dentro do mesmo intervalo de 30 minutos. Para obter os mesmos resultados uma vez por 2 horas, adicione uma janela em cascata de 2 horas à cláusula GROUP BY.

A consulta a seguir retorna resultados de todos os quatro intervalos de 30 minutos no final de cada janela de 2 horas.

SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)

Exemplo de janelas de agregação

Você pode usar System.Timestamp() como uma das janelas no constructo windows() agregado.

SELECT 
    TollId, 
    COUNT(*) 
FROM Input TIMESTAMP BY EntryTime 
GROUP BY 
    TollId, 
    Windows(
        TumblingWindow(minute, 10),
        TumblingWindow(minute, 20),
        System.Timestamp())