如何连接两张分布式表再更新左表

n=10000
ID=rand(100, n)
dates=2022.08.07..2022.08.11
date=rand(dates, n)
vol=rand(1..10 join int(), n)
t=table(ID, date, vol)

if(existsDatabase("dfs://db1")){
  dropDatabase("dfs://db1")
}
db=database(directory="dfs://db1", partitionType=RANGE, partitionScheme=0 50 100)
pt=db.createPartitionedTable(table=t, tableName=`pt, partitionColumns=`ID)
pt.append!(t)
pt1=db.createPartitionedTable(table=t, tableName=`pt1, partitionColumns=`ID)
pt1.append!(t)

update pt1 set date = pt_date from lsj(pt1, pt, `ID)
x = select * from lsj(pt1, pt, `ID)
update pt1 set date = x.pt_date from x

上述代码创建了 dfs://db1 下两张相同的分布式表 pt 和 pt1,我想先lsj两张分布式表再更新左表,倒数三行是我尝试的方法,分别报如下错,请问是什么原因,要如何实现我想要的效果?

attachments-2022-09-TDir7z9K6336b07502554.png

请先 登录 后评论

1 个回答

Bob

第一个报错是预期的,预计1.30.21 / 2.00.9版本会支持这种用法;

第二个报错也是预期的,但是报错不明确,是执行到每个分区去的时候报的错,已反馈。

目前应该没有办法实现连接两张分布式表再更新左表的效果,可以等1.30.21 / 2.00.9版本直接用你的第一种方法。

请先 登录 后评论