В этом случае вам не нужно приводить first system "date +%s"
к long, поскольку вы хотите прикрепить одну строку к другой. Вместо этого вы можете использовать
begin_unix_time:first system "date +%s"
для хранения строки чисел:
q)begin_unix_time
"1578377547"
q)`$"data/",begin_unix_time
`data/1578377547
Здесь вы используете запятую ,
для соединения одной строки с другой, затем используя cast `$
для преобразования строки в символ.
Ключевое слово save сохраняет глобальные данные в файл. Учитывая ваш путь к файлу, похоже, что вы пытаетесь сохранить глобальную переменную с именем 1578377547
, и kdb не может обрабатывать имена переменных, являющиеся просто числами.
Возможно, вы захотите попробовать вместо этого сохранить переменную с именем a1578377547
, например. Это изменит вышеприведенную строку на
q)`$"data/a",begin_unix_time
`data/a1578377547
, и ваше сохранение будет работать правильно, , учитывая, что глобальная переменная a1578377547
существует . Поскольку вы выбираете дату с точностью до секунды из linux непосредственно в строке, в которую вы сохраняете переменную, это, скорее всего, не сработает, поскольку время постоянно меняется!
Также обратите внимание, что системная команда timer будет повторять ее выполнение n
раз (как в \t:n
), что означает, что одна и та же переменная будет экономить несколько раз, если вторая не изменить. Время также вероятно изменится для больших n
, и вам не будет ничего назначено для глобальной переменной, которую вы пытаетесь сохранить в случае второго изменения.