(q / kdb +)合并列表中的项目

时间:2019-01-16 17:06:18

标签: kdb

我有一个项目列表,需要将它们合并到一个列中

使用列表

list:(1 2;3 4 5 7;0 1 3)

index   value
0       1 2
1       3 4 5 7
2       0 1 3

我的目标是

select from list2

value
1
2
3
4
5
7
0
1
3

3 个答案:

答案 0 :(得分:2)

'raze'功能使列表的1个层次变平。

   q) raze (1 2;3 4 5 7;0 1 3)
   q) 1 2 3 4 5 7 0 1 3

如果您的列表具有多级索引,则将“ over”副词与raze一起使用:

   q)  (raze/)(1 2 3;(11 12;33 44);5 6)

要将其转换为表列:

   q) t:([]c:raze list)

答案 1 :(得分:2)

ungroup也可以,只要您的表没有多列具有不同嵌套(或字符串)的列

q)ungroup ([]list)
list
----
1
2
3
4
5
7
0
1
3

答案 2 :(得分:1)

如果您只希望列表显示为这样,我将执行以下操作。

1 cut raze list 

我看到您已经使用了select语句,但是,如果要在表中将其定义为该列,请执行以下操作

a:raze list
tab:([] b:a)

您从中获得的输出应如下所示

q)tab
b
-
1
2
3
4
5
7
0
1
3

总体而言,一种更简洁的方式来实现您想要的目标

select from ([]raze list)   

为避免任何错误,您不应调用列标题“值”,因为这是kdb +中的受保护关键字,当您尝试将其重新分配为列标题时,kdb将遇到分配错误

`assign 

希望这会有所帮助