解决方案
取连续合约数据,可以对表A中的每一行,分别提交一个query,最后用union合并
数据:
TradingDay = 2020.03.01..2020.04.01
Instrument = take(`IF1911`IF1912`IF1913`IF1914`IF1915, 32)
db = database("dfs://dict",VALUE,2020.03.01..2020.04.01)
dbSchema = table(1:0,`TradingDay`Instrument,`Date`SYMBOL)
pt = db.createPartitionedTable(dbSchema,`pt,`TradingDay)
t = table(TradingDay,Instrument)
pt.append!(t)
TradingDay = 2020.03.01..2020.04.01
Instrument = take(`IF1911`IF1912`IF1913`IF1914`IF1915`IF1918`IF1916`IF1917, 32)
LastPrice = rand(0.5,32)
db1 = database("dfs://tick",VALUE,2020.03.01..2020.04.01)
dbSchema1 = table(1:0,`TradingDay`Instrument`LastPrice,`Date`SYMBOL`DOUBLE)
pt1 = db1.createPartitionedTable(dbSchema1,`pt1,`TradingDay)
t1 = table(TradingDay,Instrument,LastPrice)
pt1.append!(t1)
本文方案代码:
def getTickData(dict){// 注意dict不是字典,是一张内存表
return select TradingDay, Instrument, LastPrice from loadTable("dfs://tick", "pt1") where TradingDay = dict.TradingDay, Instrument = dict.Instrument
}
对比:
本文提供的方案 耗时:14.118 ms
ej 方案 耗时:26.761 ms