

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á.

# Operações de dados de streaming: associações de streams
<a name="stream-joins-concepts"></a>

É possível ter vários streams no aplicativo em seu aplicativo. Você pode gravar consultas `JOIN` para correlacionar os dados que chegam nesses streams. Por exemplo, suponha que você tenha os seguintes fluxos no aplicativo:
+ **OrderStream**— Recebe pedidos de estoque sendo feitos.

  ```
  (orderId SqlType, ticker SqlType, amount SqlType, ROWTIME TimeStamp)
  ```
+ **TradeStream**— Recebe as negociações de ações resultantes desses pedidos.

  ```
  (tradeId SqlType, orderId SqlType, ticker SqlType, amount SqlType, ticker SqlType, amount SqlType, ROWTIME TimeStamp)
  ```

Estes são exemplos de consulta `JOIN` que correlacionam os dados desses streams.

## Exemplo 1: relata pedidos com transações realizadas até um minuto após os pedidos serem feitos
<a name="join-ex1"></a>

Neste exemplo, a consulta associa o `OrderStream` e o `TradeStream`. No entanto, como queremos apenas as transações feitas um minuto após os pedidos, a consulta define a janela de 1 minuto pelo `TradeStream`. Para obter informações sobre consultas em janelas, veja [Janelas deslizantes](sliding-window-concepts.md).

```
SELECT STREAM
     ROWTIME, 
     o.orderId, o.ticker, o.amount AS orderAmount,
     t.amount AS tradeAmount
FROM OrderStream AS o
JOIN TradeStream OVER (RANGE INTERVAL '1' MINUTE PRECEDING) AS t
ON   o.orderId = t.orderId;
```

É possível definir as janelas explicitamente usando a cláusula `WINDOW` e gravando a consulta anterior da seguinte forma: 

```
SELECT STREAM
    ROWTIME, 
    o.orderId, o.ticker, o.amount AS orderAmount,
    t.amount AS tradeAmount
FROM OrderStream AS o
JOIN TradeStream OVER t
ON o.orderId = t.orderId
WINDOW t AS
    (RANGE INTERVAL '1' MINUTE PRECEDING)
```

Quando você incluir essa consulta no código do aplicativo, esse código será executado continuamente. O aplicativo emitirá uma saída para cada registro que chegar no `OrderStream`, se houver transações dentro da janela de 1 minuto após o pedido ser feito. 

A associação na consulta anterior é uma associação interna, na qual a consulta emite registros no `OrderStream` com registros correspondentes no `TradeStream` (e vice-versa). Usando uma associação externa, crie outro cenário interessante. Suponha que você queira pedidos de ações para as quais não há transações em até um minuto da realização do pedido, e transações relatadas na mesma janela, mas para outros pedidos. Este é um exemplo de *associação externa*. 

```
SELECT STREAM
    ROWTIME, 
    o.orderId, o.ticker, o.amount AS orderAmount,
    t.ticker, t.tradeId, t.amount AS tradeAmount,
FROM OrderStream AS o
LEFT OUTER JOIN TradeStream OVER (RANGE INTERVAL '1' MINUTE PRECEDING) AS t
ON    o.orderId = t.orderId;
```