KDB asof join提供不正确的结果
我有一个交易表KDB asof join提供不正确的结果,join,kdb,q-lang,Join,Kdb,Q Lang,我有一个交易表交易: 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 ... Stock
交易
:
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
...
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
...
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
以及价格数据表价格
:
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
...
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
...
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
当我加入时…
aj[
`Stock`Timestamp;
Trades;
update TimestampPrice:Timestamp from Prices / let's me track which price gets joined
]
…我得到了错误的结果:
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
...
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
...
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=1
在09:13:59
交易,但在08:05:09
的价格上加入
另外,我发现很奇怪,加入的TimestampPrice
突然从08:05:09
跳到10:31:45
我已经手动检查了数据中是否存在可能导致这种情况的缺口
可能出了什么问题
此外,还要确保Timestamp列被排序为aj 假设是这样
–user2393012 Apr 9 8:47有趣的是,我能够使用您的数据使其正常工作。您的时间戳列是什么类型的?我怀疑时间戳是一个混合列表,而不是时间戳类型。。。我想应该是2014.03.03T09:13:59.054,而不是2014.03.03 09:13:59.054,日期和时间之间有空格。。。只是想确保这不是打字错误……此外,还要确保Timestamp列按照aj的假设进行排序is@user2393012-这就解决了!谢谢