Создать развернутую таблицу в q - PullRequest
0 голосов
/ 22 января 2020

У меня есть таблица «сделок», которую я хочу отобразить в каталоге, который я создал.

Из того, что я исследовал, правильный синтаксис - `:splay/ set trades. Я пробовал это, однако я получаю ошибку 'type.

Мне удалось сохранить плоский стол, используя `:splay/flattrades set trades.

Ответы [ 2 ]

2 голосов
/ 23 января 2020

это задокументировано на официальном сайте do c: https://code.kx.com/q/kb/splayed-tables/

Возможно, вы не перечислили столбцы символов с использованием .Q.en.

Если вы все еще получаете ошибки даже после перечисления, это может быть связано с несовместимыми типами данных в ваших столбцах (например, столбец, содержащий смесь длинных и целых чисел). Вы можете проверить это, используя что-то вроде:

distinct type''[trades]

, предполагая, что ваша таблица сделок является таблицей в памяти. Выше должен возвращать только один уникальный тип данных для каждого столбца.

0 голосов
/ 23 января 2020

Терри, скорее всего, правильный, ошибка типа связана с попыткой развернуть таблицу без проверки того, что символы сначала перечислены. Если по какой-то причине вы захотите обойти это (1014 *) (что я бы не советовал), вы можете просто написать столбцы по отдельности, используя что-то вроде следующего. *. Но это хорошее упражнение для понимания того, как записать на диск в kdb +

forceSplay:{[dir;tab] 
    {[d;t;c]@[d;c;:;t[c]]}[dir;0!tab;] each cols tab;
    @[dir;`.d;:;cols 0!tab]
 }

Здесь я использую @ для применения функции set (которая представлена ​​как :) в каталоги. Первым шагом является запись каждого столбца для таблицы по отдельности, а последующим шагом является запись файла списка столбцов .d.

...