在 kdb 中展开后,在一列上应用 parted 属性,而不会在另一列上丢失 sorted 属性
Apply parted attribute on a column without loosing sorted attribute on another column after splay in kdb
我们有一笔 table 交易按时间列排序
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);
我们正在尝试按日期对其进行分区,并在时间列上应用排序属性,在符号列上应用分离属性。
但是,如果我们使用 .Q.en 并设置对 table 进行分区,则排序属性必须丢失。
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];
我们如何在 sym 列上应用 parted 属性,同时丢失 time 列的 sorted 属性?
在一般情况下,您不能同时让 `p
on sym 和 `s
on time。比如这个table
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
已经按时间排序了,但是你不能在sym上应用`p
。如果重新排列行以使 `p
适用于 sym,您将丢失时间值的升序:
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
话虽如此,如果您只想保存一个 table 作为磁盘上分区 table 的一部分,例如。您只需要确保 sym 是分开的并且时间在每个 sym 中排序。也就是说 `sym`time xasc t
就够了。
我们有一笔 table 交易按时间列排序
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);
我们正在尝试按日期对其进行分区,并在时间列上应用排序属性,在符号列上应用分离属性。
但是,如果我们使用 .Q.en 并设置对 table 进行分区,则排序属性必须丢失。
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];
我们如何在 sym 列上应用 parted 属性,同时丢失 time 列的 sorted 属性?
在一般情况下,您不能同时让 `p
on sym 和 `s
on time。比如这个table
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
已经按时间排序了,但是你不能在sym上应用`p
。如果重新排列行以使 `p
适用于 sym,您将丢失时间值的升序:
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
话虽如此,如果您只想保存一个 table 作为磁盘上分区 table 的一部分,例如。您只需要确保 sym 是分开的并且时间在每个 sym 中排序。也就是说 `sym`time xasc t
就够了。