让我们有一个存储时间点(双时态)数据的表:
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
值。此外,from 的值并没有以任何方式更新时间戳,因为我们已经将该值反映在携带的旧时间戳中。IBM
pit
2015.03.10D15:43:50
106.6
new
pit
pit
如何使用 编写各自的insert
语句q
?
注意:为了简单起见,它的价值pit
是由此处未显示的附加列进行分区。source
此外,分区将具有`g#sym
(可能`p#sym
相反)和`s#dt
属性。