解决方案
取连续合约数据,可以对表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