replayDS

语法

replayDS(sqlObj, [dateColumn], [timeColumn], [timeRepartitionSchema])

参数

sqlObj 是SQL查询的元代码。SQL查询的表对象是DFS表,且至少有一个分区列为DATE类型。

dateColumntimeColumn 是一个字符串,表示SQL查询的表对象的日期列和时间列。dateColumn的每一天会产生一个数据源。dateColumn必须是SQL查询的表对象的分区列之一。如果没有指定 dateColumn与 timeColumn,原数据表的第一列将会作为 dateColumn。

timeRepartitionSchema 是一个TIME或NANOTIME类型的向量。如果指定了 timeColumn,timeRepartitionSchema可用于划分更小粒度的数据源。如果为[t1, t2, t3],那么将每天的数据进一步划分为4个数据源:[00:00:00.000,t1), [t1,t2), [t2,t3) 和 [t3,23:59:59.999)。

详情

用于DFS表,生成一组数据源,作为 replay 函数的输入。

例子

例1. 回放一张表

$ n=int(60*60*6.5)
$ sym = take(take(`IBM,n).join(take(`GS,n)), n*2*3)
$ date=take(2021.01.04..2021.01.06, n*2*3).sort!()
$ time=take(09:30:00..15:59:59,n*2*3)
$ volume = rand(100, n*2*3)
$ t=table(sym,date,time,volume)
$ if(existsDatabase("dfs://test_stock")){
$ dropDatabase("dfs://test_stock")
$ }
$ db1=database("",RANGE, 2021.01.04..2021.01.06)
$ db2=database("",VALUE,`IBM`GS)
$ db=database("dfs://test_stock",COMPO,[db1, db2])
$ trades=db.createPartitionedTable(t,`trades,`date`sym)
$ trades.append!(t);
$ ds = replayDS(sqlObj=<select * from loadTable(db, `trades)>, dateColumn=`date, timeColumn=`time)
$ ds.size();
3

$ ds = replayDS(sqlObj=<select * from loadTable(db, `trades)>, dateColumn=`date, timeColumn=`time, timeRepartitionSchema=[11:30:00, 14:00:00])
$ ds.size();
9