2013-04-19 2 views
3

Я хочу разбить таблицу kdb, поэтому мне нужно сначала перечислить столбцы символов. Я использую оператор .Q.en для выполнения этой задачи:Как перечислить несколько столбцов в таблице kdb?

mytable_mem_enum: .Q.en[`$sym_path] mytable_mem 

/generate partition schema 
(`$db_path;``!((17;2;9);(17;2;9))) set ([]ts:`time$(); msg_type:`symbol$(); price_type:`byte$(); memo:`symbol$()) 

/store 
(`$db_path) upsert (select ts,msg_type,pricetype,memo from mytable_mem_enum) 

Q создает файл с именем sym в каталоге I, указанном в sym_path. Этот файл содержит перечисления для всех столбцов символов? В чем разница между .Q.en и синтаксисом:

([] ti:09:30:00 09:31:00; s:`:/db/sym?`ibm`msft; p:101 33f) 

ответ

3

.Q.en ли перечислять какие-либо столбцы символа типа в таблице.

Практически ничем не отличается от перечисления от руки, за исключением удобства простой функции.

+0

Интересно, делает .Q.en всегда создает «сим» файл или можно выбрать другое имя? Если мы будем перечислять вручную, мы должны создать один файл для каждого столбца символов, я думаю. –

+1

Вы можете изучить исходный код 'k' .Q.en, чтобы узнать, как именно он делает то, что он делает. Он определен в 'q.k', или вы можете увидеть его, оценив' .Q.en'. Короткий ответ: да, это возможно, и вам не нужно иметь отдельные файлы для каждого столбца. Например, вы можете сделать новую версию .Q.en для перечисления на основе собственного файла sym. – skeevey