考虑以下示例:
test:([] name:`symbol$(); secondColumn:`int$());
insert[`test;(`John;1)];
myvar:exec name from test;
现在myvar
现在是:
q)myvar
,`John
所以要选择实际结果,我必须这样做:
q)myvar[0]
`John
我理解这是因为初始化,所以有没有办法让myvar
立即包含实际值?
答案 0 :(得分:2)
使用[0]
或first
的数组访问是正确的方法,如果你想要一个" atomic"变量
myvar:first exec name from test;
答案 1 :(得分:1)
可以通过多种方式创建KDB中包含单个元素的列表(这是您在myvar
中获得的内容)
q)enlist `John
,`John
q)(),`John
,`John
KDB表基本上是列表字典的flip
。
`name`secondColumn!(`John`James;1 2) /Dictionary of lists
name | John James
secondColumn| 1 2
q)test2:flip `name`secondColumn!(`John`James;1 2)
name secondColumn
------------------
John 1
James 2
以下两个命令都会获得相同的结果:
q)exec name from test2
q)test2[`name]
`John`James
当您使用test
命令选择exec
列时,它会返回列表中的所有元素(包含一个元素的列表)
除了在接受的答案中解释的方式之外,还有更多的方法(稍微不同),你可以从表中返回第一个元素。
q)exec name[0] from test
q)test[`name][0]
q)exec first name from test