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-这就解决了!谢谢