мягкое удаление столбца из таблицы в q - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь удалить столбец из таблицы без потери данных, чтобы данные могли быть восстановлены снова, но при загрузке таблицы процессом q удаленный столбец не будет отображаться.Очевидно, мой код ниже не будет работать.Есть ли что-то конкретное для q, которое может это сделать?dir - это таблица, а c - столбец, который нужно удалить.

{[dir;t;c] delete c from (` sv (dir,t),`)}

1 Ответ

0 голосов
/ 04 февраля 2019

kdb + имеет простой способ «удалить» столбец без фактического удаления данных столбца.Если вы посмотрите в каталог, где хранится ваша таблица, вы сможете определить файл .d.Здесь kdb + хранит правильный порядок столбцов вашей таблицы.Чтобы удалить столбец, просто удалите имя столбца из этого .d файла.Например:

q)get `:test/.d
`sym`time`src`bid`ask`bsize`asize
q)
q)`:test/.d set `sym`time`src`bid`ask`bsize
`:test/.d
q)
q)test
sym  time                          src bid   ask   bsize asize
--------------------------------------------------------------
AAPL 2014.04.21D08:00:00.456000000 L   25.32 25.36 8000  8500
AAPL 2014.04.21D08:00:01.387000000 O   25.32 25.35 9500  2500
AAPL 2014.04.21D08:00:10.348000000 N   25.35 25.35 8000  5000
AAPL 2014.04.21D08:00:10.532000000 L   25.33 25.37 5000  7000
AAPL 2014.04.21D08:00:15.163000000 L   25.34 25.36 10000 8000
AAPL 2014.04.21D08:00:15.847000000 N   25.32 25.36 1500  500
AAPL 2014.04.21D08:00:16.335000000 N   25.33 25.34 8500  5500
AAPL 2014.04.21D08:00:17.017000000 N   25.33 25.34 9000  2500
AAPL 2014.04.21D08:00:17.634000000 N   25.3  25.36 9500  1000
AAPL 2014.04.21D08:00:19.427000000 L   25.33 25.36 9500  5000
AAPL 2014.04.21D08:00:24.629000000 N   25.33 25.37 6000  2000
AAPL 2014.04.21D08:00:25.207000000 L   25.33 25.36 5000  2500
AAPL 2014.04.21D08:00:29.962000000 L   25.32 25.38 3500  5000
AAPL 2014.04.21D08:00:31.998000000 O   25.34 25.36 5500  4000
AAPL 2014.04.21D08:00:33.795000000 N   25.34 25.36 5000  3500
AAPL 2014.04.21D08:00:34.651000000 L   25.35 25.37 7500  6500
AAPL 2014.04.21D08:00:38.843000000 O   25.33 25.36 4000  6500
AAPL 2014.04.21D08:00:40.062000000 L   25.33 25.38 2000  9500
AAPL 2014.04.21D08:00:43.508000000 N   25.35 25.36 6500  10000
AAPL 2014.04.21D08:00:46.823000000 N   25.35 25.38 6000  7500
..
q)\l .
q)test
sym  time                          src bid   ask   bsize
--------------------------------------------------------
AAPL 2014.04.21D08:00:00.456000000 L   25.32 25.36 8000
AAPL 2014.04.21D08:00:01.387000000 O   25.32 25.35 9500
AAPL 2014.04.21D08:00:10.348000000 N   25.35 25.35 8000
AAPL 2014.04.21D08:00:10.532000000 L   25.33 25.37 5000
AAPL 2014.04.21D08:00:15.163000000 L   25.34 25.36 10000
AAPL 2014.04.21D08:00:15.847000000 N   25.32 25.36 1500
AAPL 2014.04.21D08:00:16.335000000 N   25.33 25.34 8500
AAPL 2014.04.21D08:00:17.017000000 N   25.33 25.34 9000

После удаления kdb + не будет ассоциировать столбец с вашей таблицей и не будет отображаться при вызове в память.

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

...