给出下表:
time | col1 col2 col3 ...
--------------------------------
10:53:02 | 89 89 76 ...
...
Run Code Online (Sandbox Code Playgroud)
如何从该表中选择由列名称列表引用的列的子集(包括索引),即cols:('col1';'col3');
预期结果将是:
time | col1 col3
----------------------
10:53:02 | 89 89
...
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 5
您可以将 take (#) 关键字与 each right (/:) 副词一起使用。所以 q 将从表 t 中获取 sym 和 price 列的子集,并返回一个包含您的键和所需数据子集的表
q)t:([time:.z.z+ 1 2];sym:`a`b;price:10 20;vol:30 40)
q)c:`sym`price
q)c#/:t
time | sym price
-----------------------| ---------
2019.09.05T07:56:36.069| a 10
2019.09.06T07:56:36.069| b 20
Run Code Online (Sandbox Code Playgroud)
有几种方法可以做到这一点:
q) t:([time:.z.z+ 1 2];sym:`a`b;price:10 20;vol:30 40)
Run Code Online (Sandbox Code Playgroud)
输出中所需的列:
q) c:`sym`price
Run Code Online (Sandbox Code Playgroud)
将表键列添加到上面的列表中:
q) c:keys[t],c
Run Code Online (Sandbox Code Playgroud)
使用功能选择:
q) keys[t] xkey ?[`t;();0b;c!c]
Run Code Online (Sandbox Code Playgroud)
使用 Take(#) 运算符
q) keys[t] xkey c#0!t
Run Code Online (Sandbox Code Playgroud)
输出:
time | sym price
-----------------------| ---------
2019.09.04T23:05:21.577| a 10
2019.09.05T23:05:21.577| b 20
Run Code Online (Sandbox Code Playgroud)