带连接单元的多插入

5w9g7ksd  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(228)

根据ApacheHiveWiki(https://cwiki.apache.org/confluence/display/hive/languagemanual+dml),多插入“最小化所需的数据扫描次数。hive只需扫描一次输入数据(并对输入数据应用不同的查询运算符),就可以将数据插入多个表中”。
但是,是否可以对这些多个插入应用联接?
我这样做是因为我不能在commonfrom语句中应用join,因为我需要将第二个表的数据子集化,同时考虑每个“第一”表的不同参数。
提前谢谢!

kokeuurv

kokeuurv1#

应该可以这样。

from (
select a.*,b* from a inner join b on a.id=b.id2
)
insert ..
insert ..
50few1ms

50few1ms2#

是的,你也可以应用连接条件。查询格式如下:

from emp a,emp b
insert into table manager select distinct a.manager_id, a.name where a.id=b.manager_id 
insert into table dept select distinct a.dept_id, a.project_id;

上面的查询将在emp表上应用self-join,提取manager\ id和name,然后插入manager表。它还会在dept表中插入project\u id和dept\u id。
简单地说,使用下面的内部联接查询也将执行与上面相同的任务:

from emp a inner join emp b 
insert into table manager select distinct a.manager_id, a.name where a.id=b.manager_id 
insert into table dept select distinct a.dept_id, a.project_id;

相关问题