2014-12-22 1 views
1

У меня есть таблица в моей RDB (работает стандартный RQ), который включает в себя вложенный список поплавков формы:Сохранение KDB + «unmappable» таблицу на диск

(((1.a 1.b);(2.a 2.b);...;(N.a N.b));((N+1.a N+1.b);...;(N+X.a N+X.b))) 

Когда .u.end называется I получить «неустранимую ошибку».

Есть ли способ сохранить глубоко вложенные данные в hdb?

ответ

2

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

q)t:([] a:1 2 3; f:(1 2.0;(3 4.;5 6.); 7. 8.)) 
q)t 
a f 
--------- 
1 1 2 
2 3 4 5 6 
3 7 8 
q)`:t/ set t 
k){$[@x;.[x;();:;y];-19!((,y),x)]} 
'type 
q.q)) 
q.q))\ 
q) 

Сбой в качестве вложенного типа.

q)`:t/ set select a from t 
`:t/ 
q)`:t/.d set `a`f 
`:t/.d 
q)`:t/f set t`f 
`:t/f 
q)\l . 
q)t 
a f 
--------- 
1 1 2 
2 3 4 5 6 
3 7 8 

Превосходит, но если вы сравните скорость доступа с не вложенными данными, вы увидите, что доступ очень медленный.

Возможно, это не встроенное поведение, чтобы предотвратить сохранение пользователями в этом формате, не зная компромиссов.

+0

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