Kdb 根据正负值更新表值

Kdb 根据正负值更新表值,kdb,qsqlquery,Kdb,Qsqlquery,我试图在查询中根据交易是多头(+ve值)还是空头(-ve值)对交易进行分类 我已经成功地到达了这里,但是我似乎无法用long更新正大小值,用short更新负大小值,而不会收到错误消息。 转换+ve值的失败尝试与此类似 update size:`long from R where size>0 update size:`long from R where R[`size]>0 更新失败,因为您正在尝试将长类型的某些列更新为符号类型,这将导致混合列表: q)update size:?[

我试图在查询中根据交易是多头(+ve值)还是空头(-ve值)对交易进行分类

我已经成功地到达了这里,但是我似乎无法用long更新正大小值,用short更新负大小值,而不会收到错误消息。 转换+ve值的失败尝试与此类似

update size:`long from R where size>0
update size:`long from R where R[`size]>0

更新失败,因为您正在尝试将长类型的某些列更新为符号类型,这将导致混合列表:

q)update size:?[size>0;`long;`short] from R

稍快的版本:

q) update new_size:`short`long size>0 from R

值得注意的一点是,null
0n
的处理少于任何数字,如果
R
包含null,那么它将默认为
short
,在某些情况下会给您意外的结果

下面的空检查将处理该边缘情况

q)update size:?[null size;`;?[size>0;`long;`short]] from R

但是,在某些情况下,默认为long或short可能完全没有问题。

这是失败的,因为Qbie只更新了一些值,这会导致混合列表。可以将长列更改为符号列。
q)update size:?[null size;`;?[size>0;`long;`short]] from R