Ao trabalhar com cargas em batch, idealmente temos a visão completa ou parcialmente limitada de um dataset, como em pipelines incrementais. Tal visão holística dos dados garante que agregações ou visões do passado vão nos dar resultados ao mínimo constantes no passar do tempo.
O consumo de dados que estão em constante movimento, nos obriga a pausar o processo de leitura caso necessário observar o que já foi lido. Aqui as agregações, por terem um contexto bem delimitado da visão observada durante o tempo, são possíveis mas exigem controles vindo de conceitos como watermarking e stateful streaming, que abordaremos em outra seção.
Observando eventos em streaming, podemos subentender que o tamanho dos dados é infinito.
Um último conceito que faz parte do SS é a diferenciação entre o event time e o processing time: considerando o timeline de eventos, podemos delimitar a visão a partir de um intervalo, que deve ser decidido a partir de uma data específica dentro do evento, o event time; ou a partir da data de leitura/processamento, o processing time. Como exemplo, podemos criar uma streaming query de eventos vindos de dispositivos móveis e proteger de cenários em que o usuário manipula a data e hora do seu aparelho, ao determinar que certa coluna deve ser o event time, e que seu tempo máximo de vida seja de, por exemplo, 15 minutos, descartando eventos antigos.
Portanto, quando necessário fazer agregações de streams, devemos escolher uma coluna do tipo timestamp para termos a noção do tempo e assim conter eventuais atrasos, além de servir de base para validar quão atrasado está o processamento da stream.