从hdf5文件导入数据时如何把整数转换成时间?

发布于 2022-09-12 04:31:23 字数 1000 浏览 24 评论 0

我有一个h5文件,运行下面代码,

use hdf5
dataFilePath = "/home/database/v10012/server/comm-ticks-updates1.hdf5"
datasetName = "/A2005/20200506"
schema=hdf5::extractHDF5Schema(dataFilePath,datasetName)
tmpTB = hdf5::loadHDF5(dataFilePath,datasetName)

得到schema如下所示:
image
数据集tmpTB如下所示:
image

现在我要h5文件的数据导入下列DolphinDB分布式表:

db1 = database("", VALUE, 2020.01.01..2020.12.31)
db2 = database("", HASH,[SYMBOL,3])
db = database("dfs://future",COMPO, [db1,db2])
colNames=`instrument`tradingday`calendarday`time`lastp`volume`openinterest`turnover`ask1`asksz1`bid1`bidsz1
colTypes=[SYMBOL,DATE,DATE,TIME,DOUBLE,INT,DOUBLE,DOUBLE,DOUBLE,INT,DOUBLE,INT]
t=table(1:0,colNames,colTypes)
transpt=db.createPartitionedTable(t,`tick,`tradingday`instrument)

碰到一个问题就是tradingday、calendarday、time的值如何从整数抓换成DATE和TIME,也即20200506如何转换成2020.05.06,900003376如何转换成9:00:03.376?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囍笑 2022-09-19 04:31:23

新版本hdf5插件hdf5::loadHDF5Ex函数
提供了一个transform参数,在将数据导入数据库之前,若需要对数据进行预处理,例如转换日期和时间数据类型,填充空值等,可以在hdf5::loadHDF5Ex函数时指定transform参数。tansform参数接受一个函数作为参数,并且要求该函数只能接受一个参数。函数的输入是一个未分区的内存表,输出也是一个未分区的内存表。

tradingday、calendarday、time列可以使用temporalParse函数进行日期和时间类型数据的格式转换。再使用replaceColumn!函数替换表中原有的列。


def d2m(mutable t){
    return t.replaceColumn!(`tradingday,t.tradingday.format("00000000").datetimeParse("yyyyMMdd")).replaceColumn!(`calendarday,t.calendarday.format("00000000").datetimeParse("yyyyMMdd")).replaceColumn!(`time,t.time.format("000000000").datetimeParse("HHmmssSSS"))
}

lst=exec tableName from hdf5::lsTable(dataFilePath) where tableType="H5T_COMPOUND"
for(datasetName in lst) 
    hdf5::loadHDF5Ex(db,`tick,`tradingday`instrument,dataFilePath,datasetName,,,,d2m)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文