在 IMPALA 脚本的插入语句中使用选择查询的结果

Posted

技术标签:

【中文标题】在 IMPALA 脚本的插入语句中使用选择查询的结果【英文标题】:Use the result of a select query in an insert statement in IMPALA script 【发布时间】:2021-03-30 14:04:15 【问题描述】:

下面的 select 语句的结果每天都在变化,但始终是 1 行:

select col1 from table_x;

我想在以下插入语句中使用该结果:

insert overwrite table table_y
  select
  a.col1,
  b.col2,
  <result_of_select_statament_here>,
  a.col4
from table_y a
inner join table_z b
on a.col3 = b.col3;

有没有办法将该select语句的结果放入一个变量中,然后在insert语句中使用它?

如果没有,还有其他方法吗?

【问题讨论】:

【参考方案1】:

您可以使用以下解决方法。由于您不想添加新的连接条件,因此可以分两步完成。 第 1 步 - 在 c.col1 = a.col1 上组合 table_x c 和 table_y 并创建小表 table_tmp。 第 2 步 - 将 table_tmp 与 table_z 连接

create table table_tmp as 
  select
  a.col1, 
  c.col1,
  a.col4
from table_y a 
left join table_x c on c.col1 = a.col1;

insert overwrite table table_y
  select
  a.col1,
  b.col2,
  a.col1,
  a.col4
from table_tmp a
inner join table_z b on a.col3 = b.col3
;

【讨论】:

我无法使用其他联接。内存限制。 我修改了答案,请看一下?

以上是关于在 IMPALA 脚本的插入语句中使用选择查询的结果的主要内容,如果未能解决你的问题,请参考以下文章

Apache Impala(五) Impala数据导入方式

Impala分区表

Impala Shell 查询 -q 在字符串中带有双引号

在 impala-shell 中运行 Python 脚本

impala 实操

为啥插入重复主键时 Kudu 不会失败?