KDB, как назначить значение в корневом пространстве имен из другого пространства имен? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть таблица (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

Как я могу назначить таблицу в корневом пространстве имен `,без изменения пространства имен с помощью \ d.??

Я уже проверил, что мета обеих сторон оператора присваивания эквивалентна.Код выполняется правильно при удалении оператора присвоения (:).

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

Любая помощь будет оценена

Спасибо

Ответы [ 4 ]

0 голосов
/ 26 ноября 2018

Вы также можете использовать 'set' для обновления переменных в глобальном пространстве имен:

q) `..feed_exclude set `.[`feed_exclude], flip enlist each first select feed,tab from 0!`[`feed_table]
0 голосов
/ 26 ноября 2018

Если вы пытаетесь сослаться на переменные в корневом пространстве имен, вы можете добавить .. к символическому имени переменной.В вашем случае это будет `..feed_exclude.

. Затем вы можете использовать insert для добавления в таблицу.

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

Надеюсь, это поможет.

0 голосов
/ 26 ноября 2018

Один из вариантов - использовать 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
0 голосов
/ 26 ноября 2018

Попробуйте следующее

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