将两个表与一个公共字段合并

jgzswidk  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(491)

在hive中,我想将两个表(都有两列)与一个公共列(time)合并。合并表将有3列(公共+x+y)。

表a

| Time  | X     |
|------ |---    |
| 1     | 2     |
| 2     | 1     |
| 3     | 5     |

表b

| Time  | Y     |
|------ |---    |
| 2     | 1     |
| 8     | 6     |

合并表:

| Time  | X     | Y     |
|------ |---    |---    |
| 1     | 2     | 0     |
| 2     | 1     | 1     |
| 3     | 5     | 0     |
| 8     | 0     | 6     |

我试过了 UNION ALL 以及 OUTER JOIN , OUTER JOIN 工作,但给我 null 结果在时间列中。
使用 UNION ALL :

CREATE TABLE m AS SELECT * FROM A UNION ALL select * FROM B;

我得到以下信息:
语义异常1:89并集两边的模式应该匹配。

hfyxw5xn

hfyxw5xn1#

希望我能正确理解你的问题。
请检查下面的查询

CREATE TABLE M AS SELECT coalesce(A.TIME,B.TIME) TIME , coalesce(A.X,0) as X, coalesce(B.Y,0) as Y
FROM A FULL OUTER JOIN B
ON A.TIME = B.TIME;

相关问题