1

Hive データベースに次のテーブルがあります。

table1:
id  t     X
1   1     a
1   4     a
2   5     a
3   10    a

table2:
id   t    Y
1    3    b
2    6    b
2    8    b
3    15   b

そして、それらをマージして、次のようなテーブルを作成したいと思います。

id   t    Z
1    1    a
1    3    b
1    4    a
2    5    a
2    6    b
2    8    b
3    10   a
3    15   b

基本的に私がやりたいことは次のとおりです。

  1. 列の結合id(その部分は簡単です)

  2. table1.tを結合table2.tして新しい列にするt

  3. 対応する が から来ている場合、およびそれが から来ている場合、Zに等しい変数を持ちますtable1.Xttable1.ttable2.Ytable2.t

  4. テーブルを順番に並べますid(tそれほど難しいことではありません)。

パート 2 と 3 の実行方法がわかりません。 で外部結合を試しました table1.id = table2.id and table1.t = table2.tが、2 つの列がマージされませんt

任意のポインタをいただければ幸いです。ありがとう!

4

2 に答える 2

1
CREATE TABLE table3 as SELECT * FROM (SELECT id,t,X as Z FROM t3_1 UNION ALL SELECT id,t,Y as Z FROM t3_2) u1 order by id,t;

常に必要というわけではありませんが、結合されたクエリにサブクエリを使用すると、整理しやすくu1.idなります。さらに、クエリの他の部分でユニオン (例: ) からフィールドを参照できます。

スキーマを一致させるには、3 列目にエイリアスが必要です。ソース テーブル名がまだ列になっていない場合は、次のようにすることができます。

select * from (select id,t,'a' from t3_1 UNION ALL select id,t,'b' from t3_2) u1;
于 2013-01-15T02:09:53.683 に答える
1

これを試してみてください。他の 2 つのテーブルのすべての値をテーブル 3 に挿入します。

INSERT INTO table3 ( t, Z ) SELECT t, X FROM table1 UNION ALL SELECT t, Y FROM table2

于 2013-01-11T18:16:18.350 に答える