Применить атрибут parted к столбцу, не теряя отсортированный атрибут для другого столбца после splay в kdb - PullRequest
0 голосов
/ 05 апреля 2020

У нас есть таблица торговли, которая сортируется по столбцу времени

q)trade:([] date:2020.04.05; time:asc 1000000?09:30:00.000 + til 21600000; sym:1000000?`GOOG`AMZN`FB; price:1000000?10.; size:1000000?1000000);

Мы пытаемся разделить ее по дате и применить отсортированный атрибут к столбцу времени и атрибут parted к столбцу sym.

Но, если мы используем .Q.en и настроим для разделения таблицы, то отсортированный атрибут должен быть потерян.

trade:`sym xasc trade;
update `p#sym from `trade;
`:/parpath/2020.04.05/trade/ set .Q.en[`:/sympath/;trade];

И, если мы используем .Q.dpft, то также будет отсортирован атрибут потерян.

.Q.dpft[`:/parpath;2020.04.05;`sym;`trade];

Как применить атрибут parted к столбцу sym с потерей отсортированного атрибута столбца времени?

1 Ответ

2 голосов
/ 05 апреля 2020

Вы не можете иметь одновременно `p в sym и `s в общем случае. Например, эта таблица

q)show t:([]sym:`AMZN`GOOG`AMZN;time:09:00:00 10:00:00 11:00:00)
sym  time
-------------
AMZN 09:00:00
GOOG 10:00:00
AMZN 11:00:00

уже отсортирована по времени, но вы не можете применить `p к sym. Если вы переставите строки так, чтобы * sym применимо к `p, вы потеряете возрастающий порядок значений времени:

sym  time
-------------
AMZN 09:00:00
AMZN 11:00:00
GOOG 10:00:00

или

sym  time
-------------
GOOG 10:00:00
AMZN 09:00:00
AMZN 11:00:00

Сказав это, parted и , отсортированные одновременно с , никогда не требуются, если все, что вам нужно, - это, например, сохранить таблицу как часть многораздельной таблицы на диске. Вам просто нужно убедиться, что sym разделен и время отсортировано внутри каждого sym. Другими словами `sym`time xasc t достаточно.

...