Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En escenarios de streaming de tiempo, un patrón común es realizar operaciones en los datos contenidos en ventanas temporales. Stream Analytics tiene compatibilidad nativa con funciones de ventana, por lo que puede crear trabajos complejos de procesamiento de flujos con un esfuerzo mínimo.
Hay cinco tipos de ventanas temporales:
Use las funciones de ventana en la cláusula GROUP BY de la sintaxis de consulta en los trabajos de Stream Analytics. También puede agregar eventos a través de varias ventanas mediante la función Windows().
Todas las operaciones de segmentación en ventanas generan resultados al final de la ventana. Al iniciar un trabajo de Stream Analytics, puede especificar la hora de inicio de salida del trabajo. El sistema captura automáticamente los eventos anteriores en las secuencias entrantes para generar la primera ventana en el momento especificado. Por ejemplo, al empezar con la opción Ahora , comienza a emitir datos inmediatamente. La salida de la ventana es un único evento basado en la función de agregado usada. El evento de salida tiene la marca de tiempo del final de la ventana y todas las funciones de ventana se definen con una longitud fija.
Ventana deslizante
Use funciones de ventana de saltos de tamaño constante para segmentar un flujo de datos en segmentos de tiempo distintos y realizar una función en ellos.
Los diferenciadores clave de una ventana de tumbling son:
- No se repiten.
- No se superponen.
- Un evento no puede pertenecer a más de una ventana de deslizamiento fijo.
Estos son los datos de entrada del ejemplo:
| Sello | CreatedAt | Zona horaria |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Hora Estándar del Pacífico |
| 5 | 2021-10-26T10:15:03 | PST |
| 4 | 2021-10-26T10:15:06 | PST |
| ... | ... | ... |
Esta es la consulta de ejemplo:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
Esta es la salida de ejemplo:
| WindowEndTime | Zona horaria | Contar |
|---|---|---|
| 2021-10-26T10:15:10 | PST | 5 |
| 2021-10-26T10:15:20 | Hora Estándar del Pacífico (PST) | 2 |
| 2021-10-26T10:15:30 | PST | 4 |
Ventana deslizante
Las funciones de ventana de salto avanzan en el tiempo por un período fijo. Puede ser fácil pensar en ellas como ventanas deslizantes que se pueden superponer y emitirse más a menudo que el tamaño de la ventana. Los eventos pueden pertenecer a más de un conjunto de resultados de ventana de salto. Para que una ventana de salto sea igual que una ventana deslizante, especifique que el tamaño del salto sea igual al tamaño de la ventana.
Estos son los datos de ejemplo:
| Sello | CreatedAt | Tema |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Transmisión en línea |
| 5 | 2021-10-26T10:15:03 | Transmisión en línea |
| 4 | 2021-10-26T10:15:06 | Transmisión en línea |
| ... | ... | ... |
Esta es la consulta de ejemplo:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
Esta es la salida de ejemplo:
| WindowEndTime | Tema | Contar |
|---|---|---|
| 2021-10-26T10:15:10 | Transmisión en línea | 5 |
| 2021-10-26T10:15:15 | Transmisión en línea | 3 |
| 2021-10-26T10:15:20 | Transmisión en línea | 2 |
| 2021-10-26T10:15:25 | Transmisión en línea | 4 |
| 2021-10-26T10:15:30 | Transmisión en línea | 4 |
Ventana deslizante
Ventanas deslizantes, a diferencia de las ventanas de tumbling o hopping, los eventos solo se producen en los momentos cuando el contenido de la ventana realmente cambia. Es decir, cuando un evento entra o sale de la ventana. Por tanto, cada ventana tiene al menos un evento. De forma similar a lo que sucede en las ventanas de salto, los eventos pueden pertenecer a más de una ventana deslizante.
Estos son los datos de entrada de ejemplo:
| Sello | CreatedAt | Tema |
|---|---|---|
| 1 | 2021-10-26T10:15:10 | Transmisión en línea |
| 5 | 2021-10-26T10:15:12 | Transmisión en línea |
| 9 | 2021-10-26T10:15:15 | Transmisión en línea |
| 7 | 2021-10-26T10:15:15 | Transmisión en línea |
| 8 | 2021-10-26T10:15:27 | Transmisión en línea |
Esta es la consulta de ejemplo:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Salida:
| WindowEndTime | Tema | Contar |
|---|---|---|
| 2021-10-26T10:15:15 | Transmisión en línea | 4 |
| 2021-10-26T10:15:20 | Transmisión en línea | 3 |
Ventana de sesión
Las funciones de la ventana de sesión agrupan eventos que llegan a momentos similares. Filtran períodos de tiempo en los que no hay datos. La función de ventana de sesión tiene tres parámetros principales:
- Timeout
- Duración máxima
- Clave de partición (opcional).
Una ventana de sesión comienza cuando se produce el primer evento. Si se produce otro evento dentro del tiempo de espera especificado del último evento ingerido, la ventana se extiende para incluir el nuevo evento. De lo contrario, si no se produce ningún evento dentro del tiempo de espera, la ventana se cierra en el tiempo de espera.
Si los eventos siguen ocurriendo dentro del tiempo de espera especificado, la ventana de sesión continúa extendiéndose hasta que se alcance la duración máxima. Los intervalos de comprobación de duración máxima son del mismo tamaño que la duración máxima especificada. Por ejemplo, si la duración máxima es 10, comprueba si la ventana supera la duración máxima en t = 0, 10, 20, 30, etc.
Cuando se proporciona una clave de partición, la función agrupa los eventos por la clave y aplica la ventana de sesión a cada grupo de forma independiente. Esta creación de particiones es útil en los casos en los que necesita ventanas de sesión diferentes para distintos usuarios o dispositivos.
Estos son los datos de entrada de ejemplo:
| Sello | CreatedAt | Tema |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Transmisión en línea |
| 2 | 2021-10-26T10:15:04 | Transmisión en línea |
| 3 | 2021-10-26T10:15:13 | Transmisión en línea |
| ... | ... | ... |
Esta es la consulta de ejemplo:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Salida:
| WindowEndTime | Tema | Contar |
|---|---|---|
| 2021-10-26T10:15:09 | Transmisión en línea | 2 |
| 2021-10-26T10:15:24 | Transmisión en línea | 4 |
| 2021-10-26T10:15:31 | Transmisión en línea | 2 |
| 2021-10-26T10:15:39 | Transmisión en línea | 1 |
Ventana de captura instantánea
Eventos de grupo de ventanas de instantáneas que tienen la misma marca de tiempo. A diferencia de otros tipos de ventanas, que requieren una función de ventana específica (como SessionWindow()), puede aplicar una ventana de instantánea agregando System.Timestamp() a la GROUP BY cláusula .
Estos son los datos de entrada de ejemplo:
| Sello | CreatedAt | Tema |
|---|---|---|
| 1 | 2021-10-26T10:15:04 | Transmisión en línea |
| 2 | 2021-10-26T10:15:04 | Transmisión en línea |
| 3 | 2021-10-26T10:15:04 | Transmisión en línea |
| ... | ... | ... |
Esta es la consulta de ejemplo:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Esta es la salida de ejemplo:
| WindowEndTime | Tema | Contar |
|---|---|---|
| 2021-10-26T10:15:04 | Transmisión en línea | 4 |
| 2021-10-26T10:15:10 | Transmisión en línea | 2 |
| 2021-10-26T10:15:13 | Transmisión en línea | 1 |
| 2021-10-26T10:15:22 | Transmisión en línea | 2 |
Pasos siguientes
Consulte los artículos siguientes: