Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
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.
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.
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.
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).
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.
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: