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().
Todas as operações de janela resultam no fim 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 as funções da janela Em cascata para segmentar um fluxo de dados em segmentos de tempo distintos e executar uma função neles.
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 em cascata.
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:
| WindowEndTime | 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 da janela de Salto pulam para frente segundo 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 da janela de salto. Para criar uma janela de Salto da mesma forma que uma janela em Cascata, especifique o tamanho do salto para ser do mesmo 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:
| Carimbo | 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:
| WindowEndTime | 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
Janelas de Instantâneo 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() à 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:
| WindowEndTime | 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: