KDB 如何从另一个命名空间为根命名空间赋值?

KDB how to assign a value in root namespace from another namespace?

我在根命名空间中有一个 table (feed_exclude),我想在不使用 \d 更改到该命名空间的情况下重新分配它。

>feed_exclude
feed      table
---------------
`feed1    `table1

\d .mon
`.[`feed_exclude],:flip enlist each first select feed,tab from 0!`.[`feed_table]
'2018.11.26T16:30:51.643 assign

如何分配给根命名空间 `. 中的 table。无需使用 \d 更改为名称空间。 ??

我已经检查过赋值运算符两边的meta是等价的。删除赋值运算符 (:) 后代码可以正确执行。

`.[`feed_exclude], flip enlist each first select feed,tab from 0!`[`feed_table]
feed      table
---------------
`feed1    `table1
`feed2    `table2

如有任何帮助,我们将不胜感激

谢谢

尝试以下方法

@[`.;`feed_exclude;,;flip enlist each first select feed,tab from 0!`.[`feed_table]]

如果您尝试引用根命名空间中的变量,您可以在变量的符号名称前加上 ..。在您的情况下,这将是 `..feed_exclude.

然后您可以使用 insert 附加到 table。

\d .mon `..feed_exclude insert flip enlist each first select feed,tab from 0!`.[`feed_table]

希望对您有所帮助。

一种选择是使用 upsert 或 insert 和符号 `.. 表示法来引用根命名空间

q)t:([]1 2 3)
q)\d .test
q.test)`..t upsert ([]10 20 30)
`..t
q.test)`..t insert ([]10 20 30)
6 7 8

您还可以使用'set'更新全局命名空间中的变量:

q) `..feed_exclude set `.[`feed_exclude], flip enlist each first select feed,tab from 0!`[`feed_table]