0

ポイントインタイム (バイテンポラル) データを格納するテーブルを用意しましょう。

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値に注意してください。また、からの値はタイムスタンプをまったく更新しませんでした。これは、その値が古いタイムスタンプにすでに反映されていたためです。IBMpit2015.03.10D15:43:50106.6newpitpit

を使用してそれぞれのinsertステートメントを記述する方法はq?

注:簡単にするために、ここでは示されていないpit追加の列で分割することをお勧めします。sourceまた、パーティションには`g#sym(おそらく`p#sym代わりに) and`s#dt属性があります。

4

1 に答える 1