Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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.
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.
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.
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).
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.
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: