将符号作为参数传递给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作为参数传递给函数?
答案 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