kdb+/q:防止初始化的表返回逗号
考虑以下示例:kdb+/q:防止初始化的表返回逗号,kdb,Kdb,考虑以下示例: test:([] name:`symbol$(); secondColumn:`int$()); insert[`test;(`John;1)]; myvar:exec name from test; 现在,myvar是: 因此,要选择实际结果,我必须: q)myvar[0] `John 我知道这是因为初始化,所以有没有办法使myvar立即包含实际值?使用[0]进行数组访问,或者如果需要原子变量,第一种方法是正确的 myvar:first exec name from tes
test:([] name:`symbol$(); secondColumn:`int$());
insert[`test;(`John;1)];
myvar:exec name from test;
现在,myvar是:
因此,要选择实际结果,我必须:
q)myvar[0]
`John
我知道这是因为初始化,所以有没有办法使myvar立即包含实际值?使用[0]进行数组访问,或者如果需要原子变量,第一种方法是正确的
myvar:first exec name from test;
在KDB中只有一个元素的列表可以通过多种方式创建,这是您在myvar中得到的 KDB表基本上是列表字典的翻页
`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
当您使用exec命令选择测试列时,它返回列表中的所有元素一个包含一个元素的列表
除了在接受的答案中解释的方法外,还有一些稍微不同的方法,但是您可以从表中返回第一个元素
q)exec name[0] from test
q)test[`name][0]
q)exec first name from test
q)exec name from test2
q)test2[`name]
`John`James
q)exec name[0] from test
q)test[`name][0]
q)exec first name from test