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

Robin
  • 614

数据库是组合分区,第一个维度按天(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

回复
阅读 1.7k
1 个回答
✓ 已被采纳

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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏