关于stockdata_csv_import_demo.教程的疑问

https://gitee.com/dolphindb/Tutorials_CN/blob/master/stockdata_csv_import_demo.md 关于该教程

1 教程中说 建议时间维度按月进行分区,产品的维度按范围或哈希分成15个分区。这样每个分区的数据量在100万行左右。这样的分区方法,既可在较长时间范围内(1个月或1年)快速查找某一个股票的数据,也可应对查找一天内全部股票的数据这样的任务。

但在后面没看到怎么月分区的 ,只看到 load one day files   一次载入一天的数据

事实上我的数据没有月份字段,怎么按照月份分区呢?是在读取每一个CSV的时候根据date字段添加一个月份字段吗,然后最后分区的时候才能依据此字段进行月份分区?

函数loadOneDayFiles把一天的csv文件写入分布式表。其实现步骤如下:

  • 先读取所有csv文件名,然后用cut函数分组,按每100个文件一组分成多组;

为什么要按100个文件为1组, 一天内的CSV文件数量又不是正好是100


对每组文件,先定义一个容量为50万行的内存表bigTable,然后调用loadOneFile把100个文件分别加载并一一插入bigTable

100个文件加起来如果超过了50万行怎么办?

如果远远小于50万行会不会造成浪费?

请先 登录 后评论

1 个回答

wale

1.按月分区的demo如下:

dbDate = database("", VALUE, 2021.01M..2021.12M)
dbSymbol=database("", HASH, [SYMBOL, 40])
db = database(dbName, COMPO, [dbDate, dbSymbol])	

不是一定要有月份字段才能按月分区,时间类型在dolphindb内部都是按整数存储,因此有日期的数据类型都可以按月分区。

2. 教程中的案例样本文件每个文件大约3-5千行,100个文件大约30-50万行,案例中的最佳实践是每批写入10-50万性能最好。不一定需要正好是100,最后一批写入剩余的文件即可。

3. 超过了50万行,内存表会自动扩容。如第2点所述,建议每批写入10-50万行,可根据实际情况修改。


请先 登录 后评论
  • 1 关注
  • 0 收藏,908 浏览
  • ddbuserex 提出于 2021-12-15 14:43

相似问题