aj查询使用失败,用最后一个已知值填充

问题描述 投票:0回答:1

我正在做一个关于一些价格数据的项目,我希望使用aj来填补天,当我缺少一个平均价格与最后交易时的价格。

我在aj中使用同一个表格两次,试图填补空白。然而,它并没有像我想象的那样填充。

您能建议我在下面的简化例子中哪里出错了吗?

西蒙

tt:([]t:1998.01.02 1998.01.03 1998.01.04 1998.01.05 1998.01.06 1998.01.07 1998.01.09;

    r:`COSC.SI`COSC.SI`COSC.SI`COSC.SI`COSC.SI`COSC.SI`COSC.SI;

    p:(0.9;0n;0n;0n;0.8;0.7473684;0.7195));

qt:([]t:1998.01.02 1998.01.03 1998.01.04 1998.01.05 1998.01.06 1998.01.07 1998.01.09;

    r:`COSC.SI`COSC.SI`COSC.SI`COSC.SI`COSC.SI`COSC.SI`COSC.SI;

    q:(0.9;0n;0n;0n;0.8;0.7473684;0.7195));

aj[`r`t;tt;qt]

得到了。

t          r       p         q       

--------------------------------------

1998.01.02 COSC.SI 0.9       0.9     

1998.01.03 COSC.SI                   

1998.01.04 COSC.SI                   

1998.01.05 COSC.SI                   

1998.01.06 COSC.SI 0.8       0.8     

1998.01.07 COSC.SI 0.7473684 0.7473684

1998.01.09 COSC.SI 0.7195    0.7195

预期。

t          r       p         q       

--------------------------------------

1998.01.02 COSC.SI 0.9       0.9     

1998.01.03 COSC.SI 0.9       0.9

1998.01.04 COSC.SI 0.9       0.9 

1998.01.05 COSC.SI 0.9       0.9 

1998.01.06 COSC.SI 0.8       0.8     

1998.01.07 COSC.SI 0.7473684 0.7473684

1998.01.09 COSC.SI 0.7195    0.7195
kdb
1个回答
2
投票

你应该使用 fills 操作符,用最近的值替换空值。语句

fills tt

将填满所有的列。要明确指定列,请使用。

update fills p from tt

Separately. aj 的方式工作,因为空值不会被从 qt 表,因此,空q值加入空p值。因此,null q值会和null p值连接起来。如果你过滤空值,你会得到你期望的结果。

aj[`r`t;tt;delete from qt where null q]

但这并不是用最近的值来填补空白的最好方法。

© www.soinside.com 2019 - 2024. All rights reserved.