Kdb 使用函数选择获取附加列
如何使用Kdb 使用函数选择获取附加列,kdb,k,Kdb,K,如何使用?获取类型为string的附加列 我试过这个: t:([]c1:`a`b`c;c2:1 2 3) ?[t;();0b;`c1`c2`c3!(`c1;`c2;10)] / ok ?[t;();0b;`c1`c2`c3!(`c1;`c2;enlist(`abc))] / ok ?[t;();0b;`c1`c2`c3!(`c1;`c2;"10")] / 'length ?[t;();0b;`c1`c2`c3!(`c1;`c2;enlist
?
获取类型为string
的附加列
我试过这个:
t:([]c1:`a`b`c;c2:1 2 3)
?[t;();0b;`c1`c2`c3!(`c1;`c2;10)] / ok
?[t;();0b;`c1`c2`c3!(`c1;`c2;enlist(`abc))] / ok
?[t;();0b;`c1`c2`c3!(`c1;`c2;"10")] / 'length
?[t;();0b;`c1`c2`c3!(`c1;`c2;enlist("10"))] / 'length
但是得到了
'length
错误。您的第一个案例有效,因为原子会自动扩展到所需的长度。对于复合列,需要显式生成正确的长度,如下所示
q)select c1,c2,c3:`abc,c4:10,c5:count[i]#enlist"abc" from t
c1 c2 c3 c4 c5
------------------
a 1 abc 10 "abc"
b 2 abc 10 "abc"
c 3 abc 10 "abc"
// in functional form
q)?[t;();0b;`c1`c2`c3!(`c1;`c2;(#;(count;`i);(enlist;"abc")))]
c1 c2 c3
-----------
a 1 "abc"
b 2 "abc"
c 3 "abc"
Jason您的第一个案例有效,因为原子会自动扩展到所需的长度。对于复合列,需要显式生成正确的长度,如下所示
q)select c1,c2,c3:`abc,c4:10,c5:count[i]#enlist"abc" from t
c1 c2 c3 c4 c5
------------------
a 1 abc 10 "abc"
b 2 abc 10 "abc"
c 3 abc 10 "abc"
// in functional form
q)?[t;();0b;`c1`c2`c3!(`c1;`c2;(#;(count;`i);(enlist;"abc")))]
c1 c2 c3
-----------
a 1 "abc"
b 2 "abc"
c 3 "abc"
杰森谢谢你,杰森!是的,即使是非功能性选择,我最近也遇到了同样的问题,你的回答帮助了我两次!:)谢谢你,杰森!是的,即使是非功能性选择,我最近也遇到了同样的问题,你的回答帮助了我两次!:)