Jointure de données de séries temporelles

Vous pouvez utiliser la construction ASOF JOIN pour joindre des tables contenant des données de série chronologique. ASOF JOIN est disponible en tant que syntaxe standard dans la clause FROM d’une instruction SELECT. Bien que les requêtes ASOF JOIN puissent être émulées par l’utilisation de SQL complexe, d’autres types de jointures et de fonctions de fenêtre, ces requêtes sont plus faciles à écrire (et sont optimisées) si vous utilisez la syntaxe ASOF JOIN.

Introduction

Vous pouvez utiliser des jointures ASOF pour analyser les données de série chronologique telles que les données de transactions financières. L’analyse des coûts de transaction, par exemple, nécessite des calculs de « glissement », qui mesurent la différence entre le prix coté au moment de la décision d’acheter des actions et le prix effectivement payé lorsque la transaction a été exécutée et enregistrée. La syntaxe ASOF JOIN peut accélérer ce type d’analyse. Étant donné que la capacité clé de cette méthode de jointure est l’analyse d’une série chronologique par rapport à une autre, ASOF JOIN peut être utile pour l’analyse de tout ensemble de données de nature historique, comme les observations météorologiques, les relevés de capteurs ou les pistes d’audit. Dans bon nombre de ces cas d’utilisation, la syntaxe ASOF JOIN peut être utilisée pour associer des données lorsque les relevés de différents appareils ont des horodatages qui ne sont pas exactement les mêmes.

On suppose que les données de série chronologique que vous devez analyser existent dans deux tables, et qu’il existe un horodatage pour chaque ligne de chaque table. Cet horodatage représente la date et l’heure « à compter de » précises d’un événement enregistré. Pour chaque ligne de la première table (ou table de gauche), la jointure utilise une « condition de correspondance » avec un opérateur de comparaison que vous spécifiez pour trouver une seule ligne dans la deuxième table (ou table de droite) où la valeur de l’horodatage est l’une des suivantes :

  • Inférieure ou égale à la valeur d’horodatage dans la table de gauche.

  • Supérieure ou égale à la valeur d’horodatage dans la table de gauche.

  • Inférieure à la valeur d’horodatage dans la table de gauche.

  • Supérieure à la valeur d’horodatage dans la table de gauche.

La ligne éligible située à droite est la correspondance la plus proche, qui peut être égale dans le temps, antérieure dans le temps ou postérieure dans le temps, selon l’opérateur de comparaison spécifié.

La cardinalité du résultat de ASOF JOIN est toujours égale à la cardinalité de la table de gauche. Si la table de gauche contient 40 millions de lignes, ASOF JOIN renvoie 40 millions de lignes. Par conséquent, la table de gauche peut être considérée comme la table « préservante » et la table de droite comme la table « référencée ».

Exemple conceptuel d’une requête ASOF JOIN

Par exemple, dans une application financière, vous pouvez avoir une table nommée quotes et une table nommée trades. Une table enregistre l’historique des offres d’achat d’actions et l’autre l’historique des transactions effectives. Une offre d’achat d’actions a lieu avant la transaction (ou éventuellement au « même » moment, selon la granularité du temps enregistré). Les deux tables contiennent des horodatages et d’autres colonnes intéressantes que vous souhaiterez peut-être comparer. Une simple requête ASOF JOIN renverra la valeur cotée la plus proche (dans le temps) avant chaque transaction. En d’autres termes, la requête pose la question suivante : « Quel était le prix d’une action donnée au moment où j’ai effectué une transaction ? ».

Supposons que la table trades contienne trois lignes et que la table quotes en contienne sept. La couleur d’arrière-plan des cellules indique les trois lignes de quotes qui seront éligibles à ASOF JOIN lorsque les lignes seront jointes sur des symboles boursiers correspondants et que leurs colonnes d’horodatage seront comparées.

Table TRADES (table gauche ou « préservante »)

Données de la table de transactions, composées de trois lignes, qui sont jointes à trois lignes de la table de valeurs cotées.

Table QUOTES (table droite ou « référencée »)

Données de la table de valeurs cotées, composées de sept lignes, identifiant les trois lignes spécifiques qui sont éligibles à la jointure avec la table de valeurs cotées.

Pour voir la syntaxe qui produit la combinaison de ces trois lignes en surbrillance (et de nombreux autres exemples), voir Jonction avec des conditions de correspondance et ON.