Как указать путь к файлу для KDB tickerplant для сохранения данных в конце дня - PullRequest
0 голосов
/ 09 мая 2020

Мне интересно, как указать путь к файлу для моей настройки тика, чтобы сохранить его, когда .u.endofday отправляется с Tickerplant. В настоящее время, когда это сообщение отправляется, RDB сохраняется в рабочем каталоге, где находится файл tick.q.

Можно ли передать путь к файлу, чтобы сохранить его в ../../ HDB, а не ../../Tick?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

В сценарии vanilla rq таблицы сохраняются с использованием

.Q.hdpf[`$":",.u.x 1;`:.;x;`sym]

, где второй параметр - это каталог, в котором сохраняются таблицы.

`:.

представляет текущий каталог. Вы можете изменить его на что-нибудь другое, например: / home / data / hdb

https://code.kx.com/q/ref/dotq/#qhdpf -save-tables

Если вы используете обычный rq сценарий, относящийся к https://github.com/KxSystems/kdb-tick/blob/master/tick/r.q

В разделе .u.rep есть комментарий, предлагающий изменить команду 'system cd', где вы можете указать любой каталог, который вам нравится. Это изменит каталог внутри процесса rq. Затем, когда вызывается .Q.hdpf, он сохранит таблицы в этот каталог. Rdb вызывает .u.rep при запуске.

.u.rep:{(.[;();:;].)each x;if[null first y;:()];-11!y;system "cd ",1_-10_string first reverse y};    
/ HARDCODE \cd if other than logdir/db

У вас может быть

system "cd /home/data/hdb"

, который изменит текущий каталог на это место

0 голосов
/ 09 мая 2020

В зависимости от вашей настройки есть несколько способов сделать это.

Но я думаю, что наиболее эффективным было бы для вас взглянуть на функцию .u.end, которая вызывается в вашей RDB, и посмотреть, что Там используется функция сохранения.

Найдите место, где .u.end определено в RDB, и посмотрите на функции save_down. Ищите .Q.dpft, который, скорее всего, или есть команда set. Документация по .Q.dpft:

https://code.kx.com/q/ref/dotq/#qdpft -save-table

Где первый вводимый аргумент - это путь к каталогу. Так что можно добавить туда каталог в виде

hsym `$"/path/path/HDB"    

, который возвращает

`:/path/path/HDB    

в качестве символа, который нужно вставить в функцию.

Могут быть разные способы сохранения таблиц, но это наиболее вероятный способ.

Существуют также различные способы выбора каталога с загруженным файлом par.txt. Это очень полезно, чтобы увидеть, загружен ли файл par.txt с помощью функции .Q.par, вызываемой в RDB.

 .Q.par[`:.;.z.d;`]  

, если ответ просто:

 `:./2020.05.09/ 

Это означает, что он использует каталог, в котором вы запустили скрипт.

Здесь вы можете найти дополнительную документацию на этом: https://code.kx.com/q/kb/partition/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...