はじめに

Vertica拡張SQLのEvent Series Joinsを使用すると、時間間隔が一致しないテーブル同士をJOINして比較することができます。
例えば、株価が変動する度に書き込まれる株式のテーブル同士をJOINして比較する場合、変動するタイミングは株式(テーブル)によって異るため時刻(行数)に差異が出ますが、不足している時刻(行数)を補完することができます。
Event Seriesとは…
時系列のデータ(一般的にはタイムスタンプデータ)を格納するテーブルのことを指します。

コマンド構文

※INTERPOLATE PREVIOUS VALUEがVertica拡張SQLの記述部分です。
 INTERPOLATE PREVIOUS VALUEで比較する列は日付/時刻型の列を指定することが一般的ですが、それ以外の列も指定可能です。

利用例

株価が変動する度に書き込まれる株式のテーブルをFULL OUTER JOINして比較する場合の例を記載します。
本例では、HPQ株の情報が格納されているhticksテーブルとACME株の情報が格納されているaticksをテーブルをJOINします。

HPQ株の情報が格納されているhticksテーブル


ACME株の情報が格納されているaticksテーブル


上記の2つのテーブルを標準SQLでJOINした場合は、以下のように一致する時間が存在しない行については片方のテーブルの情報しか出力されません。


Event Series Joinsを使用すると、存在しないデータは、直前のデータが自動で補完されて出力されます。
event_series_join
これにより、何れかの株価が変更した時点の双方の株価を比較することができます。

参考情報

INTERPOLATE
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/LanguageElements/Predicates/INTERPOLATE.htm

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/04/22 冒頭に「Time Series」の説明追加。マニュアル情報も追加。検証バージョンを9.2に変更
2017/01/10 本記事を公開