You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Q/KDB中基于变量名从表中提取列为列表?

KDB+ 动态提取表列并转为列表问题

现有如下表格:

A_1 A_2 A_3 
1   2    3 
4   5    6
7   8    9 

需求:基于变量指定的列名,从表中提取对应列并转为列表。

尝试的代码及预期输出

x:1 
exec `$"A_", string x from table 

预期输出:1 4 7

已知的部分实现(得到的是表而非列表)

enlist[`$"A_", string x]#table 

遇到的问题

尝试用value将上述单列表转为普通列表,但代码无效:

value enlist[`$"A_", string x]#table  

解决方案

方法1:修正exec的写法

exec的列参数需要正确传入,调整后即可直接得到列表:

x:1
exec (`$"A_",string x) from table

方法2:从单列表中提取列值

如果已经通过#截取到单列表,可以通过列名索引提取列表:

colName:`$"A_",string x
(colName#table)[colName]

或者更简洁的写法:

first flip enlist[`$"A_",string x]#table

方法3:使用get直接获取列

x:1
get[`table;`$"A_",string x]

说明

value无法将单列表转为普通列表的原因是:value主要用于解析字符串表达式或获取变量值,单列表本质还是表结构,必须显式提取列内的元素才能得到普通列表。

内容的提问来源于stack exchange,提问作者Shadowpulse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:22:33