Исключение удаленного доступа в DolphinDB, не удается найти объект с именем loadTable('dfs://zctestDB','trainInfoTable')

Я хочу удаленно запросить базу данных в DolphinDB. База данных создается на сервере 38.124.2.173 со следующим скриптом на сервере:

tableSchema = table(100:0,`trainID`ts`tag01`tag02,`tag03,[INT,TIMESTAMP,FLOAT,FLOAT,FLOAT )

db1 = database("",VALUE,(today()-92)..(today()+60))
db2 = database("",RANGE,0..80*10+1)
db = database("dfs://zctestDB",COMPO,[db1,db2])
dfsTable = db.createPartitionedTable(tableSchema,"trainInfoTable",`ts`trainID)

Мой код запроса, как показано ниже,

def testParallelQuery( connVector,trainIDs,startTime, endTime ){
cols=`trainID`ts`tag01
whereConditions=[<trainID in trainIDs>,expr(sqlCol(`ts),between,startTime:endTime)]
script=sql(sqlCol(cols),"loadTable('dfs://zctestDB','trainInfoTable')",whereConditions)
return ploop(remoteRun{,script}, connVector)
}
host="38.124.2.173"
port=30599
connVector = loop(xdb, take(host, 10), port, "admin", "123456")
testParallelQuery( connVector,1..5,2019.06.14T00:00:00.000, 2019.06.14T01:00:00.000 )

Следующее исключение произошло после того, как я его запустил,

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

Как я могу решить эту проблему?


person smile qian    schedule 16.09.2019    source источник


Ответы (1)


Функция sql помогает динамически создавать SQL-операторы. Параметр from принимает три типа данных: (1) объект таблицы, (2) выражение, представляющее таблицу или объединение таблиц, (3) переменная, связанная с объектом таблицы.

В вашем конкретном случае передайте выражение from следующим образом.

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

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

host="38.124.2.173"
port=30599
connVector = loop(xdb, take(host, 10), port, "admin", "123456")
testParallelQuery( connVector,1..5,2019.06.14T00:00:00.000, 2019.06.14T01:00:00.000 )
person Davis Zhou    schedule 30.05.2020