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]
但这不是用最新值填补空白的最佳方式
我正在做一个关于一些价格数据的项目,我希望使用 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]
但这不是用最新值填补空白的最佳方式