Ventanas de saltos de tamaño constante (Agregados utilizando GROUP BY) - Guía para desarrolladores de aplicaciones de Amazon Kinesis Data Analytics para SQL

Para proyectos nuevos, le recomendamos que utilice el nuevo servicio gestionado para Apache Flink Studio en lugar de aplicaciones de Kinesis Data Analytics para SQL. El servicio gestionado para Apache Flink Studio combina la facilidad de uso con capacidades analíticas avanzadas, lo que le permite crear aplicaciones sofisticadas de procesamiento de flujos en cuestión de minutos.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ventanas de saltos de tamaño constante (Agregados utilizando GROUP BY)

Cuando una consulta en ventana procesa cada ventana de forma que no se superpongan, la ventana se denomina ventana de saltos. En este caso, cada registro de una secuencia en la aplicación pertenece a una ventana específica. Se procesa solo una vez (cuando la consulta procesa la ventana a la que pertenece el registro).

Por ejemplo, una consulta mediante una cláusula GROUP BY procesa las filas en una ventana de saltos. La secuencia de demostración en el ejercicio de introducción recibe datos de cotizaciones de valores que se asignan a la secuencia en la aplicación SOURCE_SQL_STREAM_001 en su aplicación. Esta secuencia tiene el siguiente esquema.

(TICKER_SYMBOL VARCHAR(4), SECTOR varchar(16), CHANGE REAL, PRICE REAL)

En el código de la aplicación, suponga que desea encontrar los precios (min, max) agregados de cada símbolo a lo largo de un periodo de un minuto. Puede utilizar la siguiente consulta.

SELECT STREAM ROWTIME, Ticker_Symbol, MIN(Price) AS Price, MAX(Price) AS Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);

El ejemplo anterior es una consulta en ventana que está basada en el tiempo. La consulta agrupa los registros por valores ROWTIME. Para notificar cada minuto, la función STEP redondea hacia abajo los valores ROWTIME al minuto más próximo.

nota

También puede utilizar la función FLOOR para agrupar registros en ventanas. Sin embargo, FLOOR solo puede redondear los valores temporales hacia abajo a una unidad de tiempo completa (hora, minuto, segundo, etc.). Se recomienda STEP para agrupar los registros en ventanas de saltos, ya que puede redondear los valores hacia abajo a un intervalo arbitrario, por ejemplo, 30 segundos.

Este es un ejemplo de una ventana que no se superpone (de saltos). La cláusula GROUP BY agrupa los registros en una ventana de un minuto y cada registro pertenece a una ventana específica (sin solapamiento). La consulta emite un registro de salida por minuto, proporcionando los precios de cotización mínimo/máximo registrados en el minuto específico. Este tipo de consulta es útil para generar informes periódicos a partir de el flujo de datos de entrada. En este ejemplo, los informes se generan cada minuto.

Para probar la consulta
  1. Configure una aplicación siguiendo el ejercicio de introducción.

  2. Sustituya la instrucción SELECT en el código de la aplicación por la consulta SELECT anterior. El código de la aplicación resultante se muestra a continuación:

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), Min_Price DOUBLE, Max_Price DOUBLE); -- CREATE OR REPLACE PUMP to insert into output CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM Ticker_Symbol, MIN(Price) AS Min_Price, MAX(Price) AS Max_Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);