Как обновить несколько строк в многораздельной таблице в улье? - PullRequest
2 голосов
/ 23 сентября 2019

Мне нужно обновить некоторые строки в секционированной таблице по дате, с диапазонами дат, и я не знаю, как это сделать?

1 Ответ

2 голосов
/ 23 сентября 2019

Используя динамическое разбиение, вы можете перезаписать разделы, которые необходимо обновить.Используйте оператор case, чтобы проверить строки, которые нужно изменить, и установить значения, как в этом шаблоне:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table table_name partition (partition_column)

select col1, 
       col2,
       case when col1='record to be updated' then 'new value' else col3 end as col3,
       ...
       colN,
       partition_column --partition_column should be the last
from table_name 
where ...--partition predicate here
...