

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

1. A partir de **1º de setembro de 2025,** não forneceremos nenhuma correção de bug para aplicativos do Amazon Kinesis Data Analytics para SQL porque teremos suporte limitado para ele, devido à próxima descontinuação.

2. A partir **de 15 de outubro de 2025,** você não poderá criar novos aplicativos Kinesis Data Analytics para SQL.

3. Excluiremos as aplicações a partir de **27 de janeiro de 2026**. Você não poderá mais iniciar nem operar as aplicações do Amazon Kinesis Data Analytics para SQL. A partir dessa data, não haverá mais suporte ao Amazon Kinesis Data Analytics para SQL. Para obter mais informações, consulte [Descontinuação de aplicações do Amazon Kinesis Data Analytics para SQL](discontinuation.md).

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)
<a name="tumbling-window-concepts"></a>

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.\]](http://docs.aws.amazon.com/pt_br/kinesisanalytics/latest/dev/images/window-tumbling-20.png)


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](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/get-started-exercise.html) 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 do min/max ticker 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](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/get-started-exercise.html).

1. 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);
   ```