在kdb

时间:2019-11-02 16:19:05

标签: kdb

将符号作为参数传递给fby函数时的长度错误。

Syntax: (aggr;data) fby group

我有一张桌子:

 t:([] sym:10?`IBM`AMZN`MSFT; mkt:10?`m1`m2`m3; px:10?100.)

尝试在下面运行时会失败,并显示长度错误

{select from t where px=(min;px) fby x}`sym

如何将group作为参数传递给函数?

1 个答案:

答案 0 :(得分:2)

Executor变量(即列sym)不在上下文中(通常在select语句中),因为您是从select语句外部传递变量的。因此,这里您只是传入内容为“ sym”的symbol-type变量(因此长度错误)。在sym列中传递以下内容:

t[`sym]

如果您打算按各个列进行分组,则可能需要使用functional select。例如

{select from t where px=(min;px) fby x}[t`sym]

或将列名传递给函数:

?[t;enlist (=;`px;(fby;(enlist;min;`px);`sym));0b;()]
sym  mkt px      
-----------------
MSFT m2  17.80839
AMZN m1  30.17723
IBM  m2  41.1597