KDB table 中的一个 drop/delete 列如何就位?

How can one drop/delete columns from a KDB table in place?

the documentation 之后,我尝试执行以下操作:

t:([]a:1 2 3;b:4 5 6;c:`d`e`f) // some input table
`a`b _ t                       // works: delete NOT in place
(enlist `a) _ t                // works: delete NOT in place
t _:`a`b                 // drop columns in place does not work; how to make it to work?
// 'type
//   [0]  t _:`a`b

非常感谢您的帮助!

实现列删除的最简单方法是使用 qSQL:

t:([]a:1 2 3;b:4 5 6;c:`d`e`f)

delete a,b from `t -- 在这里,t 之前的反引号使更改就位。

q)t
c
-
d
e
f

你应该可以使用

delete a,b from `t

就地删除(反引号表示就地)。

或者,为了更灵活,您可以使用函数形式;

![`t;();0b;`a`b]

迈克尔和凯尔已经介绍了 q-SQL 选项;为了完整起见,这里有几个其他选项使用 _:

在您的问题中使用 _,您可以将其重新分配给 t,例如

t:`a`b _ t

您还可以使用 . 修改一个空的索引列表,即“amend entire”,这可以通过传递 `t 或不通过仅通过 t 例如

q).[t;();`a`b _] / not in-place
c
-
d
e
f
q).[`t;();`a`b _] / in-place
`t
q)t
c
-
d
e
f