【问题标题】:Merge 2 tables with one common field将 2 个表与一个公共字段合并
【发布时间】:2019-11-29 13:29:05
【问题描述】:

在 HIVE 中,我想将 2 个表(都有 2 列)与一个公共列(时间)合并。合并后的表将有 3 列(common + 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 ALLOUTER JOINOUTER JOIN 有效,但在时间列中给我null 结果。

使用UNION ALL:

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

我得到以下信息:

SemanticException 1:89 联合双方的架构应该匹配。

【问题讨论】:

    标签: join merge hive union


    【解决方案1】:

    希望,我正确理解了您的问题。

    请检查以下查询

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 2018-10-20
      • 2014-10-13
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多