分布式表如何动态添加列?如何对整列数据进行替换操作?

1. 场景是这样的:设计一个股票因子表,利用日频或者分钟K线数据计算生成各种因子,但是因子数不固定,而是会随着时间堆叠,可能最后有几百个甚至几千个,这种建表需要怎么设置呢?


2. 新建的表是这样的,

attachments-2022-06-U7OWtbNc62a7f278e300b.png

对于time列,3206010930表示2022.06.01 09:30这样,32是表示距离1990的年数。但是我想把它替换成datetime格式,这种如何操作呢?另外数据有几百个GB时如何比较高效地进行整列的替换?


3. 迁移sql数据库到dolphindb时,新建表多了一些字段,然后由于迁移数据某些字段缺省会出现报错,这种情况如何处理呢?另外,我想批量迁移数据,使用loadex是不是会自动分批导入数据呢?用load函数按照既定条数(比如每1000条)保存数据的脚本应该如何实现呢?


数据库方面也是浅尝,导致问题有点多,希望能够得到解答,万分感谢!

请先 登录 后评论

2 个回答

mhxiang

问题1:

    可以考虑因子名按值分区,日期按年或者按月分区的采用TSDB引擎的形式存储因子表,如列名为timestamp(或者date),code,factorname,factorvalue

问题2:使用temporalParse进行转换

time=3206010930 3206010935 3206010940 3206010945
val=1..4
tb=table(time,val)
def tt0datetime(time){
	t=each(a->string(1990+int(a[0:(strlen(a)-8)]))+a[(strlen(a)-8):],string(time))
	return temporalParse(t,"yyyyMMddHHmm");
	}
tb.replaceColumn!(`time,tt0datetime(tb.time))
select * from tb

attachments-2022-06-slGm8UCL62afdfcf59f92.png

问题3:    

    数据迁移时,可以指定schema,也可以进行数据转化,可以参考DolphinDB文本数据加载教程

https://gitee.com/dolphindb/Tutorials_CN/blob/master/import_csv.md

请先 登录 后评论
peter

1. 可以使用alter在需要的时候增加字段

alter table tableObj add columnName columnType;

dolphinDB有一个因子最佳实践文档,在gitee上,可以参考下。

请先 登录 后评论