2017-08-01 6 views
0

私はSQLとHiveを初めて使用しています。私は2列を追加する必要があるテーブルをハイブで持っています。 1つは "row_id"で、もう1つは "cto_id"です。ハイブ関数と "cto_id"という新しい列を使用して行IDを追加しました。ハイブの新しい列の作成と更新

それは「CTO1101」+などの値が、私はそれを行うことができますどのよう

をROW_ID含まれているように私は「cto_id」欄などで更新された値にしたいですか?以下は私のコードです。

-- assigning row number to each record in mu_temp_trials table 
select *, row_number() over() as row_id from mu_temp_trials; 

--adding new column for primary key in mu_temp_trials 
alter table mu_temp_trials add columns(cto_id string); 
//update mu_temp_trials set cto_id = "CTO_1101"+row_id; - I want to write this code in hive 
+0

あなたは、私が列を更新する必要が 'cto_id' – Adam

+0

@Adamを設定するためにトリガーを設定できますcto_idとそれ以降の使用のために必要になります。これを達成するためにどのようなハイブのコードを使用できますか? – Vaibhav

答えて

0

#let's say table mu_temp_trials has two columns - col1 & col2  
ALTER TABLE mu_temp_trials ADD COLUMNS(cto_id STRING, row_id STRING); 


INSERT OVERWRITE TABLE mu_temp_trials 
SELECT a.col1, a.col2, concat_ws('','CTO1101',cast(a.row_id as string)) AS cto_id, cast(a.row_id as string) AS row_id 
FROM (SELECT col1, col2, row_number() over() AS row_id FROM mu_temp_trials) a; 


それはあなたの問題を解決した場合はお知らせすることを忘れないでください:)

+0

@Vaibhavあなたが解決策を気に入ったら、それを正しい答えとして受け入れるべきです。将来的に同様の問題に遭遇した場合、他の人にも役立つでしょう。ありがとう! – Prem