aj 查询使用无法填充最后一个已知值

aj query use fails to fill with last known value

我正在做一个关于一些价格数据的项目,我希望使用 aj 来填充我缺少平均价格和上次交易时的价格的天数。

我在 aj 中两次使用相同的 table 来尝试填补空白。然而,它并没有像我想象的那样填满。

你能告诉我在下面的简化示例中哪里出错了吗?

西蒙

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

您应该使用 fills 运算符将空值替换为最新值。声明

fills tt

将填充所有列。要明确指定列,请使用:

update fills p from tt

分别。 aj 没有按您预期的方式工作,因为没有从 qt table 中删除空值。因此,空 q 值连接到空 p 值。如果你过滤空值,你会得到你期望的结果:

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

但这不是用最新值填补空白的最佳方式