远程访问报异常Can't find the object with name loadTable()

我想远程查询DolphinDB中的数据库,数据库是在服务器115.239.208.173上创建的,建库建表脚本如下:

tableSchema = table(100:0,`ID`ts`tag01`tag02,`tag03,[INT,TIMESTAMP,FLOAT,FLOAT,FLOAT )
db1 = database("",VALUE,2020.01.01..2020.12.31)
db2 = database("",RANGE,0..80*10+1)
db = database("dfs://db1",COMPO,[db1,db2])
dfsTable = db.createPartitionedTable(tableSchema,"pt",`ts`ID)

我的查询代码如下,

def testParallelQuery( connVector,idVec,startTime, endTime ){
cols=`ID`ts`tag01
whereConditions=[<id in idVec>,expr(sqlCol(`ts),between,startTime:endTime)]
script=sql(sqlCol(cols),"loadTable('dfs://db1','pt')",whereConditions)
return ploop(remoteRun{,script}, connVector)
}
host="115.239.208.173"
port=30599
connVector = loop(xdb, take(host, 10), port, "admin", "123456")
testParallelQuery( connVector,1..5,2020.06.14T00:00:00.000, 2020.06.14T01:00:00.000 )

运行后发生了以下异常:

Error was raised when execution : Can't find the object with name loadTable('dfs://db1','pt')

请问怎样解决这个问题?

请先 登录 后评论

1 个回答

logger

sql函数用于构造动态SQL语句,它的参数from接受三种类型的数据:(1)表对象,(2)表示表或表连接的表达式,(3)与表对象关联的变量。在您的案例中,可将表达式传递给from,代码如下:

def runSQL(trainIDs, startTime, endTime){
    cols = `ID`ts`tag01
    whereConditions = [<trainID in trainIDs>, expr(sqlCol(`ts), between, startTime:endTime)]
    return sql(sqlCol(cols), loadTable('dfs://db1','pt'), whereConditions).eval()
}

def testParallelQuery( connVector,trainIDs,startTime, endTime ){
    return ploop(remoteRun{,runSQL{trainIDs, startTime, endTime}}, connVector)
}

host="115.239.208.173"
port=30599
connVector = loop(xdb, take(host, 10), port, "admin", "123456")
testParallelQuery( connVector,1..5,2020.06.14T00:00:00.000, 2020.06.14T01:00:00.000 )
请先 登录 后评论