KDB加入了不正确的结果

时间:2014-04-08 17:21:54

标签: join kdb q-lang

我有一个交易表Trades

TradeID Stock   Timestamp
1       GOOG    2014.03.03 09:13:59.054
2       GOOG    2014.03.03 09:28:12.003
3       GOOG    2014.03.03 09:28:18.199
4       GOOG    2014.03.03 09:52:03.628
5       GOOG    2014.03.03 11:18:52.629
...

以及价格标记数据表Prices

Stock   Timestamp               Bid         Ask
GOOG    2014.03.03 08:02:34.297 102.21      102.41
GOOG    2014.03.03 08:02:40.118 102.32      102.42
GOOG    2014.03.03 08:02:44.090 102.33      102.43
GOOG    2014.03.03 08:03:20.197 102.34      102.44
GOOG    2014.03.03 08:05:09.325 102.35      102.45
...

当我进行asof加入时......

aj[
    `Stock`Timestamp;
    Trades;
    update TimestampPrice:Timestamp from Prices  / let's me track which price gets joined
]

...我收到了错误的结果:

TradeID Stock   Timestamp                TimestampPrice             Bid     Ask
1       GOOG    2014.03.03 09:13:59.054  2014.03.03 08:05:09.325    102.35  102.45
2       GOOG    2014.03.03 09:28:12.003  2014.03.03 08:05:09.325    102.35  102.45
3       GOOG    2014.03.03 09:28:18.199  2014.03.03 08:05:09.325    102.35  102.45
4       GOOG    2014.03.03 09:52:03.628  2014.03.03 08:05:09.325    102.35  102.45
5       GOOG    2014.03.03 11:18:52.629  2014.03.03 10:31:45.043    102.24  102.35
6       GOOG    2014.03.03 11:33:52.021  2014.03.03 10:31:45.043    102.24  102.35

Timestamp显示交易时间,而TimestampPrice显示已加入的价格数据的时间戳。尽管价格数据大约每30秒滴答一次, aj加入价格的结果距离实际交易还有几个小时!例如,TradeID=109:13:59进行了交易,但加入了08:05:09的价格。

此外,我发现加入的TimestampPrice突然从08:05:09跳到10:31:45,我觉得很奇怪。

我已手动检查数据中是否存在可能导致此问题的空白。

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

  

此外,还要确保将Timestamp列排序为aj   假设它是

- user2393012 4月9日8:47