怎么删除DolphinDB分布式表中某天某只股票的数据

发布于 2022-09-12 04:36:56 字数 718 浏览 20 评论 0

数据库是组合分区,第一个维度按天(MDDate列)进行值分区,第二个维度按照股票代码(SecurityID列)分为20个HASH分区,代码如下:

db1 = database("", VALUE, 2020.01.01..2020.12.31)
db2 = database("", HASH,[SYMBOL,20])
db = database(database,COMPO, [db1,db2])
colNames=`MDDate`Type`Seq`ExchID`SecurityID`ExTime`LocalTime`TradeTime`TradePrice`Volumn`Turnover`TradeBuyNo`TradeSellNo`TradeFlag
colTypes=[DATE,INT,INT,SYMBOL,SYMBOL,TIME,TIME,TIME,LONG,LONG,DOUBLE,INT,INT,SYMBOL]
t=table(1:0,colNames,colTypes)
transpt=db.createPartitionedTable(t,`transpt,`MDDate`SecurityID)

我想删除2018.03.01这一天的000890这只股票的数据,怎么写?下面是哪里错了吗?
image.png
image.png

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

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

发布评论

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

评论(1

魂ガ小子 2022-09-19 04:36:56

DolphinDB分布式表目前不支持delete,要删除记录需要先把相关分区的数据整个读取出来保存到内存表并从内存表删除数据,然后用dropPartition函数删除这个分区,再把内存表数据写入到分布式表。
想删除2018.03.01这一天的000890这只股票的数据,步骤如下:
(1).先求出000890在hash分区中的bucket:

hashBucket(`000890, 20)

得到bucket为3.
(2).得到分区数据

t=select * from loadTable(db, `testTb1) where MDDate=2018.03.01,hashBucket(symbol, 20)=3 

(3).从内存表中删除

delete from t where symbol=`000890

(4).删除分区

dropPartition(db,"/20180301/Key3")

(5).写入数据

loadTable(db, `testTb1).append!(t)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文