如何在dolphindb中删除给定时期内股票的数据



如何在dolphindb中删除给定期间内股票的数据?

我在dolphindb:中创建了一个数据库和一个表

login("admin", "123456")
n=1000000
ID=rand(`a1`a2`a3`a4`a5`a6`a7`a8`b1`b2`b3`c1`c2`c3, n)
dates=2017.08.07..2017.08.11
date=rand(dates, n)
x=rand(10.0, n)
t=table(ID, date, x)
if(existsDatabase("dfs://compodb")){
dropDatabase("dfs://compodb")
}
dbDate = database(, VALUE, 2017.08.07..2017.08.11)
dbID = database(, HASH,  [STRING, 5]);
db = database("dfs://compodb", COMPO, [dbDate, dbID])
pt = db.createPartitionedTable(t, "pt", `date`ID)

我想删除ID=`c2在2017.08.07至2017.08.11期间的数据。有有效的方法吗?

您可以首先定义一个函数来删除某一天的某只股票,然后使用循环或ploop函数来删除指定时间段内的数据:

def dropCodeData(dbName, tableName, code,day){
cnt = exec count(*) from loadTable(dbName, tableName) where date=day, ID=code
if(cnt==0) return;
hashNumber = hashBucket(code, 5)
t = select * from loadTable(dbName, tableName) where date=day, hashBucket(ID, 5)=hashNumber
delete from t where ID = code
dropPartition(dbName,"/"+temporalFormat(day,"yyyyMMdd")+"/Key"+string(hashNumber))
loadTable(dbName, tableName).append!(t)
}
ploop(dropCodeData{database("dfs://compodb"), "pt", `c2}, 2017.08.07..2017.08.11)
loop(dropCodeData{database("dfs://compodb"), "pt", `c2}, 2017.08.07..2017.08.11)
//delete certain stock o certain day
dropCodeData(database("dfs://compodb"), "pt", `c2, 2017.08.10)

最新更新