KDB如何在查询中使用$ []

时间:2018-03-12 04:28:58

标签: kdb

如果我有桌子

t: flip `a`b`c!(til 10;10?(1b,0b);10?(1b,0b))

为什么我可以这样做

update x:?[b;1;?[c;3;0]] from t

但不是

update x:$[b;1;c;3;0] from t

[返回排名错误] 而这个

b:0b
c:1b
$[b;1;c;3;0]

工作正常吗?

1 个答案:

答案 0 :(得分:6)

$是仅适用于原子值的标准conditional运算符。 ?vector conditional运算符,适用于原子和向量条件。

表格中的列是向量,因此使用$会导致错误,而?则不会。要将$与表格一起使用,您需要将值单独传递给它,例如:

update x:{$[x;1;y;3;0]}'[b;c] from t