| set hive.support.concurrency=true; |
| set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; |
| set hive.strict.checks.cartesian.product=false; |
| set hive.mapred.mode=nostrict; |
| |
| drop table if exists mydim; |
| drop table if exists updates_staging_table; |
| drop view if exists updates_staging_view; |
| |
| create table mydim (key int, name string, zip string, is_current boolean) |
| clustered by(key) into 3 buckets |
| stored as orc tblproperties ('transactional'='true'); |
| |
| insert into mydim values |
| (1, 'bob', '95136', true), |
| (2, 'joe', '70068', true), |
| (3, 'steve', '22150', true); |
| |
| create table updates_staging_table (ks int, newzip string); |
| insert into updates_staging_table values (1, 87102), (3, 45220); |
| |
| create view updates_staging_view (kv, newzip) as select ks, newzip from updates_staging_table; |
| |
| delete from mydim |
| where mydim.key in (select kv from updates_staging_view where kv >=3); |
| select * from mydim order by key; |
| |
| update mydim set is_current = false |
| where mydim.key not in(select kv from updates_staging_view); |
| select * from mydim order by key; |
| |
| update mydim set name = 'Olaf' |
| where mydim.key in(select kv from updates_staging_view); |
| select * from mydim order by key; |