kdb+/q:防止初始化表返回逗号
kdb+/q: Prevent initialised tables from returning a comma
考虑以下示例:
test:([] name:`symbol$(); secondColumn:`int$());
insert[`test;(`John;1)];
myvar:exec name from test;
现在 myvar
现在是:
q)myvar
,`John
因此,为了 select 实际 结果,我必须这样做:
q)myvar[0]
`John
我知道这是因为初始化,所以有没有办法让 myvar
立即包含实际值?
如果您需要 "atomic" 变量,使用 [0]
或 first
的数组访问是正确的方法。
myvar:first exec name from test;
可以通过多种方式创建 KDB 中具有单个元素的列表(这是您在 myvar
中得到的内容)
q)enlist `John
,`John
q)(),`John
,`John
KDB table 基本上是列表字典的 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
当您使用 exec
命令选择 test
列时,它返回列表的所有元素(一个包含一个元素的列表)
除了接受的答案中解释的方法之外,还有其他几种方法(但略有不同)可以获取从 table.
返回的第一个元素
q)exec name[0] from test
q)test[`name][0]
q)exec first name from test
考虑以下示例:
test:([] name:`symbol$(); secondColumn:`int$());
insert[`test;(`John;1)];
myvar:exec name from test;
现在 myvar
现在是:
q)myvar
,`John
因此,为了 select 实际 结果,我必须这样做:
q)myvar[0]
`John
我知道这是因为初始化,所以有没有办法让 myvar
立即包含实际值?
如果您需要 "atomic" 变量,使用 [0]
或 first
的数组访问是正确的方法。
myvar:first exec name from test;
可以通过多种方式创建 KDB 中具有单个元素的列表(这是您在 myvar
中得到的内容)
q)enlist `John
,`John
q)(),`John
,`John
KDB table 基本上是列表字典的 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
当您使用 exec
命令选择 test
列时,它返回列表的所有元素(一个包含一个元素的列表)
除了接受的答案中解释的方法之外,还有其他几种方法(但略有不同)可以获取从 table.
返回的第一个元素q)exec name[0] from test
q)test[`name][0]
q)exec first name from test