首页 > 解决方案 > 将大文件加载到在 KDB 上按月而不是每天分区的自动分区数据库中

问题描述

我有一个非常大的文本文件(> 100 GB),我想将它加载到分区的展开 KDB 数据库中。

以下指南似乎是我想要使用的https://code.kx.com/v2/kb/loading-from-large-files/

指南中的以下代码按日期进行分区。

$ cat fs.q
\d .Q

/ extension of .Q.dpft to separate table name & data
/  and allow append or overwrite
/  pass table data in t, table name in n, : or , in g
k)dpfgnt:{[d;p;f;g;n;t]if[~&/qm'r:+en[d]t;'`unmappable];
{[d;g;t;i;x]@[d;x;g;t[x]i]}[d:par[d;p;n];g;r;<r f]'!r;
@[;f;`p#]@[d;`.d;:;f,r@&~f=r:!r];n}

/ generalization of .Q.dpfnt to auto-partition and save a multi-partition table
/  pass table data in t, table name in n, name of column to partition on in c
k)dcfgnt:{[d;c;f;g;n;t]*p dpfgnt[d;;f;g;n]'?[t;;0b;()]',:'(=;c;)'p:?[;();();c]?[t;();1b;(,c)!,c]}

\d .

r:flip`date`open`high`low`close`volume`sym!("DFFFFIS";",")0:
w:.Q.dcfgnt[`:db;`date;`sym;,;`stats]
.Q.fs[w r@]`:file.csv

但是,我想按日期的月份或年份自动分区(我不想转换日期列本身,我只想按月份或年份对数据进行分区)。如何修改上面的代码来做到这一点?我尝试更改date tomm$date ,但这没有用。

标签: kdb

解决方案


推荐阅读