Operações de dados de streaming: associações de streams - 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á.

Operações de dados de streaming: associações de streams

É 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

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.

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;