改写成hive update "rpt_wjq_jf_value_dhfz_list" as "a" set "a"."subst_name" = "b"."aliasname", "a"."seq_id" = "b"."seq_id" from "dim_subst" as "b" where "a"."subst_id" = "b"."subst_id";
时间: 2023-06-28 17:12:15 浏览: 44
在 Hive 中,可以使用如下 SQL 语句来实现类似功能:
```
UPDATE rpt_wjq_jf_value_dhfz_list a
SET subst_name = b.aliasname, seq_id = b.seq_id
FROM dim_subst b
WHERE a.subst_id = b.subst_id;
```
需要注意的是,在 Hive 中,UPDATE 语句通常需要配合使用 INSERT OVERWRITE 语句来实现,具体可以根据业务需求进行调整。
相关问题
将代码转换成hive语法 update rpt_wjq_jf_value_dhfz_list as a set a.acc_nbr = b.acc_nbr, a.cust_nbr = b.cust_nbr, a.subst_id = b.subst_id from rptdev.rpt_comm_cm_serv_cdma as b where a.cust_id = b.cust_id;
在Hive中,不支持Update语法,但可以使用INSERT OVERWRITE语句进行更新操作。以下是将代码转换为Hive语法的示例:
```
INSERT OVERWRITE TABLE rpt_wjq_jf_value_dhfz_list
SELECT b.acc_nbr, b.cust_nbr, b.subst_id, a.*
FROM rpt_wjq_jf_value_dhfz_list a
JOIN rptdev.rpt_comm_cm_serv_cdma b ON a.cust_id = b.cust_id;
```
该语句将会把rpt_wjq_jf_value_dhfz_list表中的a.acc_nbr, a.cust_nbr, a.subst_id字段更新为rptdev.rpt_comm_cm_serv_cdma表中的b.acc_nbr, b.cust_nbr, b.subst_id字段。JOIN条件为a.cust_id = b.cust_id。
改写成hive语法 update "rpt_wjq_jf_value_dhfz_list" as "a" set "a"."subst_name" = "b"."aliasname", "a"."seq_id" = "b"."seq_id" from "dim_subst" as "b" where "a"."subst_id" = "b"."subst_id";
抱歉,Hive不支持UPDATE语句中的FROM子句。您可以使用INSERT OVERWRITE语句将符合条件的数据写入新表或分区,然后删除原始表或分区。例如:
```
INSERT OVERWRITE TABLE rpt_wjq_jf_value_dhfz_list
SELECT b.aliasname AS subst_name, b.seq_id, a.col3, a.col4, ...
FROM rpt_wjq_jf_value_dhfz_list a
JOIN dim_subst b ON a.subst_id = b.subst_id;
```
请注意,此语句将替换原始表中的所有列,因此需要在SELECT子句中包括所有需要保留的列。如果需要保留除了subst_name和seq_id以外的所有列,可以使用以下语句:
```
INSERT OVERWRITE TABLE rpt_wjq_jf_value_dhfz_list
SELECT CASE WHEN a.subst_id = b.subst_id THEN b.aliasname ELSE a.subst_name END AS subst_name,
CASE WHEN a.subst_id = b.subst_id THEN b.seq_id ELSE a.seq_id END AS seq_id,
a.col3, a.col4, ...
FROM rpt_wjq_jf_value_dhfz_list a
LEFT JOIN dim_subst b ON a.subst_id = b.subst_id;
```
这会在保留原始表中的所有列的同时更新subst_name和seq_id。