首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asof (aj)连接严格小于KDB/Q

asof (aj)连接严格小于KDB/Q
EN

Stack Overflow用户
提问于 2019-02-10 08:26:58
回答 2查看 1K关注 0票数 0

我有一个引价表和贸易表,并想列出引价表和加入贸易表匹配时间戳严格小于贸易的时间戳。

例如:

代码语言:javascript
复制
    q:([]time:10:00:00 10:01:00 10:01:00 10:01:02;sym:`ibm`ibm`ibm`ibm;qty:100 200 300 400)
    t:([]time:10:01:00 10:01:00 10:01:02;sym:`ibm`ibm`ibm;px:10 20 25)
    aj[`time;q;t]

返回

代码语言:javascript
复制
+------------+-----+-----+----+
|     time   | sym | qty | px |
+------------+-----+-----+----+
|   10:00:00 | ibm | 100 |    |
|   10:01:00 | ibm | 200 | 20 |
|   10:01:00 | ibm | 300 | 20 |
|   10:01:02 | ibm | 400 | 25 |
+------------+-----+-----+----+

但我想要得到的结果如下:

代码语言:javascript
复制
+------------+-----+-----+----+
|     time   | sym | qty | px |
+------------+-----+-----+----+
|   10:00:00 | ibm | 100 |    |
|   10:01:00 | ibm | 100 | 10 |
|   10:01:00 | ibm | 100 | 20 |
|   10:01:02 | ibm | 300 | 25 |
+------------+-----+-----+----+

有没有一个连接函数可以基于严格小于time的时间戳进行匹配,而不是to-to和including?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-10 10:43:22

我认为如果您对aj[`time;q;t]做了一些变化,那么您将不能修改qty列,因为表t不包含它。相反,您可能需要使用更“传统”的aj[`time;t;q]

代码语言:javascript
复制
q)@[;`time;+;00:00:01]aj[`time;@[t;`time;-;00:00:01];q]
time     sym px qty
-------------------
10:01:00 ibm 10 100
10:01:00 ibm 20 100
10:01:02 ibm 25 300

这会转移时间,以避免在时间相等的情况下进行匹配,但不会为开始时的每个引用包含一行。

我认为,如果您希望将交易加入报价,而不是像我所做的那样,将报价加入交易,那么您可能需要考虑一些方法来区分在您的示例中同时发生的两个交易。这样做的一种方法是使用他们到达的订单,即将第一个报价与第一个交易相匹配。

票数 0
EN

Stack Overflow用户

发布于 2019-02-10 09:16:23

我认为一种“黑客”的方式就是将所有的交易移动到最小的时间单位,做aj,然后再移动回来

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54612223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档