ハイブで同じパーティションテーブルを選択して列値を上書きする方法。ハイブでパーティションテーブル内の別の列を選択して列値を上書きする方法
私は、クエリ
CREATE TABLE user (fname string,lname string) partitioned By (day int);
の下に実行してテーブルを作成していると私は、テーブルにデータを挿入した後、データを挿入します。 私はそれが以下のように見える選択クエリを実行する:私の要件ごとに
AA AA 20170201
BB BB 20170201
CC CC 20170201
DD DD 20170202
EE EE 20170203
を、私は追加のクエリ以下の助けを借りて、私のテーブルに1つの以上の列(ユーザー)を追加します。列を追加した後
ALTER TABLE user ADD COLUMNS (day2 int);
、私のテーブルは
AA AA NULL 20170201
BB BB NULL 20170201
CC CC NULL 20170201
DD DD NULL 20170202
EE EE NULL 20170203
以下のように見える。しかし、私は次のようにテーブルをしたいです。
AA AA NULL 20170201
BB BB NULL 20170201
CC CC NULL 20170201
AA AA NULL 20170202
BB BB NULL 20170202
CC CC NULL 20170202
DD DD NULL 20170202
EE EE NULL 20170203
私はnull値を取得しています理由:
AA AA 20170201 20170202
BB BB 20170201 20170202
CC CC 20170201 20170202
DD DD 20170202 20170202
EE EE 20170203 20170203
は、だから私は、私は結果がある
select * from user;
の下のような選択クエリを実行したクエリの下
insert overwrite table user partition (day)
select
fname,
lname,
day as day2,
case
when day <= 20170202 then 20170202
when day > 20170202 then day
end as day
from user;
を実行しました私に教えてください。私は逃した何かを知って、パーティションハイブ表の振る舞い後this.i.e
AA AA 20170201 20170202
BB BB 20170201 20170202
CC CC 20170201 20170202
DD DD 20170202 20170202
EE EE 20170203 20170203