Janelas em cascata (Agregações usando GROUP BY) - Guia do desenvolvedor do Amazon Kinesis Data Analytics SQL para aplicativos

Após uma análise cuidadosa, decidimos descontinuar o Amazon Kinesis Data Analytics SQL para aplicativos em duas etapas:

1. A partir de 15 de outubro de 2025, você não poderá criar um novo Kinesis Data Analytics SQL para aplicativos.

2. Excluiremos seus aplicativos a partir de 27 de janeiro de 2026. Você não poderá iniciar ou operar seu Amazon Kinesis Data Analytics SQL para aplicativos. O suporte não estará mais disponível para o Amazon Kinesis Data Analytics SQL a partir desse momento. Para obter mais informações, consulte Descontinuação do Amazon Kinesis Data Analytics SQL para aplicativos.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Janelas em cascata (Agregações usando GROUP BY)

Quando uma consulta em janela processa cada janela de forma não sobreposta, é chamada de janela em cascata. Nesse caso, cada registro em um fluxo no aplicativo pertence a uma janela específica. Ele é processado somente uma vez (quando a consulta processa a janela à qual o registro pertence).

Timeline showing non-overlapping windows processing data streams at distinct time intervals.

Por exemplo, uma consulta de agregação que usa uma cláusula GROUP BY processa linhas em uma janela em cascata. O fluxo de demonstração no exercício de conceitos básicos recebe os dados de preços de ações que são mapeados no fluxo no aplicativo SOURCE_SQL_STREAM_001. O stream tem o seguinte esquema:

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

Em seu código de aplicativo, suponha que você queira encontrar preços agregados (mínimo, máximo) para cada marcador em uma janela de um minuto. É possível usar a seguinte 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);

Esse é um exemplo de consulta em janela baseada em horário. A consulta agrupa registros por valores de ROWTIME. Para relatórios por minuto, a função STEP arredonda os valores ROWTIME para baixo, para o minuto mais próximo.

nota

Você também pode usar a função FLOOR para agrupar registros em janelas. No entanto, FLOOR só pode arredondar os valores de tempo para uma unidade de tempo inteira (hora, minuto, segundo e assim por diante). STEP é recomendada para agrupar registros em janelas em cascata porque, assim, pode arredondar valores para baixo para um intervalo arbitrário, por exemplo, 30 segundos.

Essa consulta é um exemplo de janela não sobreposta (em cascata). Os registros de grupos da cláusula GROUP BY em uma janela de um minuto e cada registro pertence a uma janela específica (não sobreposta). A consulta emite um registro de saída por minuto, fornecendo o preço de marcador mín./máx. registrado no minuto específico. Esse tipo de consulta é útil para gerar relatórios periódicos do stream de dados de entrada. Neste exemplo, os relatórios são gerados a cada minuto.

Para testar a consulta
  1. Configure um aplicativo seguindo as instruções no exercício de conceitos básicos.

  2. Substitua a instrução SELECT no código de aplicativo pela consulta SELECT anterior. O código de aplicativo resultante é mostrado a seguir:

    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);