ポイントインタイム (バイテンポラル) データを格納するテーブルを用意しましょう。
pit:([]dt:`date$();sym:`symbol$();val:`float$();stamp:`timestamp$())
サンプル データは次のようになります。
`pit insert (2015.01.05 2015.01.06 2015.01.05;`IBM`IBM`MSFT;105.11 106.6 35.3; 2015.02.01D05:01:25.0 2015.02.01D05:01:25.0 2015.02.01D05:01:25.0)
pit
dt sym val stamp
----------------------------------------------------
2015.01.05 IBM 105.11 2015.02.01D05:01:25.000000000
2015.01.06 IBM 106.6 2015.02.01D05:01:25.000000000
2015.01.05 MSFT 35.3 2015.02.01D05:01:25.000000000
たとえば、あるstamp
時点で、IBM
シンボルに対して有効な 105.11 の値を記録しました。2015.01.05
新しいデータが継続的に入ってきて、それらのいくつかは新しいレコードとしてテーブルに挿入されpit
ますが、新しい情報を伝える場合に限られます。の既存のレコードをpit
削除したり、更新/上書きしたりすることはできません。つまり、監査または信頼性の目的で、古い値 (ある場合) を追跡したいと考えています。時間の経過とともに収益の見積もりが更新されることを考えてみてください。
たとえば、後で受け取る可能性があります。
new:([]dt:`date$();sym:`symbol$();val:`float$())
`new insert (2015.01.05 2015.01.06;`IBM`IBM;105.22 106.6)
new
dt sym val
---------------------
2015.01.05 IBM 105.22
2015.01.06 IBM 106.6
new
に情報を組み込むpit
と、後者は次のようになります。
pit
dt sym val stamp
----------------------------------------------------
2015.01.05 IBM 105.11 2015.02.01D05:01:25.000000000
2015.01.05 IBM 105.22 2015.03.10D15:43:50.000000000
2015.01.06 IBM 106.6 2015.02.01D05:01:25.000000000
2015.01.05 MSFT 35.3 2015.02.01D05:01:25.000000000
現在のタイムスタンプ(執筆時点)で入力されたシンボルの「新しい」105.22
値に注意してください。また、からの値はタイムスタンプをまったく更新しませんでした。これは、その値が古いタイムスタンプにすでに反映されていたためです。IBM
pit
2015.03.10D15:43:50
106.6
new
pit
pit
を使用してそれぞれのinsert
ステートメントを記述する方法はq
?
注:簡単にするために、ここでは示されていないpit
追加の列で分割することをお勧めします。source
また、パーティションには`g#sym
(おそらく`p#sym
代わりに) and`s#dt
属性があります。