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

(q/kdb+) Merge items in a list

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

使用列表

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

如果您只是想让您的列表看起来像那样,我会执行以下操作。

1 cut raze list 

我看到您使用了 select 语句,但是如果您希望在 table 中将列定义为这样,请执行以下操作

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

你的输出应该是这样的

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

总的来说,实现你想要做的事情的更简洁的方法是

select from ([]raze list)   

为避免任何错误,您不应调用 header 'value' 列,因为这是 kdb+ 中受保护的关键字,当您尝试将其重新分配为 header 列时,kdb 将通过分配错误

`assign 

希望对您有所帮助

'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)

要将其转换为 table 列:

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

ungroup 也可以工作,前提是您的 table 没有具有不同嵌套(或字符串)的多个列

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