【问题标题】:How transform this query in impala?如何在 impala 中转换此查询?
【发布时间】:2020-10-21 09:38:38
【问题描述】:

这是 SQL 中的一个示例,但我需要在 Cloudera Imapala 中转换此过程

UPDATE e_solutions_owner.nueva_tabla
    SET de_canal_venta_distr = 'CAV ENDESA X'
    where de_canal_venta_distr = 'CAT VENTAS SII';

我怎么能创造它??

谢谢

【问题讨论】:

  • 除非您有 Kudu,否则 Impala 通常没有 UPDATE。如果您没有 Kudu,则需要将数据写入 tmp 表,比较目标和源并执行 2 步过程来更新数据。

标签: sql cloudera impala


【解决方案1】:

你没有提到你有没有 Kudu。所以我假设你没有支持 UPDATE 的 Kudu。您可以分三步完成。我创建了一个临时表并替换了最终表。 第 1 步 - 将“更新”数据加载到 tmp 表中

create table if not exists e_solutions_owner.tmp_nueva_tabla as
select 
col1,col2...
de_canal_venta_distr
from e_solutions_owner.nueva_tabla
where ifnull(de_canal_venta_distr,'x') <> 'CAT VENTAS SII'
union 
select 
col1,col2...
'CAV ENDESA X' de_canal_venta_distr
from e_solutions_owner.nueva_tabla
where de_canal_venta_distr = 'CAT VENTAS SII'

Step2 - 将覆盖数据插入主表。
insert overwrite e_solutions_owner.nueva_tabla select * from e_solutions_owner.tmp_nueva_tabla

第 3 步 - 删除临时表。
drop table e_solutions_owner.tmp_nueva_tabla

【讨论】:

  • Np,我没有 KUDU。谢谢@koushik roy。好主意!在两个查询中。
猜你喜欢
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2015-06-07
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多