Opérations de diffusion de données : Jointures de flux - Guide du développeur d'Amazon Kinesis Data Analytics SQL pour applications

Après mûre réflexion, nous avons décidé de mettre fin à Amazon Kinesis Data Analytics SQL pour les applications en deux étapes :

1. À compter du 15 octobre 2025, vous ne pourrez plus créer de nouveaux Kinesis Data Analytics SQL pour les applications.

2. Nous supprimerons vos candidatures à compter du 27 janvier 2026. Vous ne serez pas en mesure de démarrer ou d'utiliser votre Amazon Kinesis Data Analytics SQL pour les applications. Support ne sera plus disponible pour Amazon Kinesis Data Analytics à partir SQL de cette date. Pour de plus amples informations, veuillez consulter Arrêt d'Amazon Kinesis Data Analytics SQL pour applications.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Opérations de diffusion de données : Jointures de flux

Vous pouvez disposer de plusieurs flux intégrés à l'application dans votre application. Vous pouvez écrire des requêtes JOIN pour corréler les données qui arrivent dans ces flux. Par exemple, supposons que vous ayez les flux intégrés à l'application suivants :

  • OrderStream— Reçoit les commandes de stock passées.

    (orderId SqlType, ticker SqlType, amount SqlType, ROWTIME TimeStamp)
  • TradeStream— Reçoit les transactions boursières qui en résultent pour ces ordres.

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

Voici des exemples de requête JOIN qui corrèlent les données de ces flux.

Exemple 1 : Génération de rapport en cas d'opérations à moins d'une minute du placement de l'ordre

Dans cet exemple, votre requête joint les deux flux OrderStream et TradeStream. Cependant, comme nous voulons uniquement les opérations placées dans un délai d'une minute après les ordres, la requête définit la fenêtre de 1 minute sur le flux TradeStream. Pour plus d'informations sur les requêtes à fenêtres, consultez Fenêtres défilantes.

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;

Vous pouvez définir explicitement la fenêtre en utilisant la clause WINDOW et en écrivant la requête précédente comme suit :

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)

Lorsque vous incluez cette requête dans votre code d'application, le code d'application s'exécute en continu. Pour chaque enregistrement qui arrive dans le flux OrderStream, l'application émet une sortie si des opérations ont lieu dans la fenêtre de 1 minute suivant l'ordre.

La jointure dans la requête précédente est une jointure interne où la requête émet des enregistrements dans OrderStream pour lesquels il existe un enregistrement correspondant dans TradeStream (et vice versa). A l'aide d'une jointure externe, vous pouvez créer un autre scénario intéressant. Supposons que vous vouliez les ordres de bourse pour lesquels aucune opération n'a lieu dans un délai d'une minute après le placement de l'ordre de bourse, et que des opérations soient signalées dans la même fenêtre, mais pour certains autres ordres. Il s'agit d'un exemple de jointure externe.

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;