update更新分布式表抛出异常:Syntax Error: [line #1] Cannot recognize the token pt

def UpdateDatabase(dbname,tbname,start_time,end_time,update_factor,symbol_name){
        pt = loadTable(dbname,tbname)
	num_row = exec count(*) from loadTable(dbname,tbname) where tradetime>=start_time and tradetime<=end_time and symbol = symbol_name
	script = "update pt set "+update_factor+" = rand(100.0,"+num_row+") where tradetime>= "+start_time+" and tradetime <= "+end_time+" and symbol = "+'"'+symbol_name+'"'
	runScript(script)	
}
dbname,tbname = "dfs://test","test"
start_time,end_time =2022.01.01,2022.01.31
update_factor = "f001"
symbol_name = "AAA"
timer updateDatabase(dbname,tbname,start_time,end_time,update_factor,symbol_name)

运行上述代码报错:

Syntax Error: [line #1] Cannot recognize the token pttimer { updateDatabase: runScript(script) => Syntax Error: [line #1] Cannot recognize the token pt
请先 登录 后评论

1 个回答

chris

pt拼接到字符串后是一个字符,正确写法应该为:


def updateDatabase(dbname,tbname,start_time,end_time,update_factor,symbol_name){
        num_row = exec count(*) from loadTable(dbname,tbname) where tradetime>=start_time and tradetime<=end_time and symbol = symbol_name
        script = "update loadTable("+'"'+dbname+'"'+','+'"'+tbname+'"'+')'+" set "+update_factor+" = rand(100.0,"+num_row+") where tradetime>= "+start_time+" and tradetime <= "+end_time+" and symbol = "+'"'+symbol_name+'"'
        runScript(script)        
}
请先 登录 后评论
  • 1 关注
  • 0 收藏,797 浏览
  • wangsenxiao 提出于 2022-12-02 13:20

相似问题