2012-12-31 34 views
9

Tôi có table_A:HiveQL UNION ALL

id var1 var2 
1 a b 
2 c d 

table_b:

id var1 var2 
3 e f 
4 g h 

Tất cả tôi muốn là bảng, kết hợp:

id var1 var2 
1 a b 
2 c d 
3 e f 
4 g h 

Đây là .hql tôi:

CREATE TABLE combined AS 
SELECT all.id, all.var1, all.var2 
FROM (
    SELECT a.id, a.var1, a.var2 
    FROM table_A a 
    UNION ALL 
    SELECT b.id, b.var1, b.var2 
    from table_B b 
) all; 

Tôi đang mã hóa trực tiếp từ trang 112 của Lập trình Hive bởi Edward Capriolo, et al.

Các lỗi tôi nhận được, không có vấn đề gì thay đổi bề ngoài có vẻ hợp lý của các bên trên mà tôi cố gắng, là "cannot recognize input near '.' 'id' ',' in select expression."

Tôi đã cố gắng sử dụng "là" giữa các tên bảng và bí danh, dấu sao kể từ khi tôi muốn tất cả mọi thứ từ cả hai bảng. Lỗi tương tự. Tôi đã thử những thứ khác và nhận được các lỗi khác ... Tất cả tôi muốn làm là UNION hai bảng. (Tôi đã thử UNION thay vì UNION ALL - cùng một lỗi).

Trả lời

10

Chỉ cần thay thế tất cả bằng một từ khác. Nó có vẻ là một từ khóa dành riêng. Ví dụ:

CREATE TABLE combined AS 
SELECT unioned.id, unioned.var1, unioned.var2 
FROM (
    SELECT a.id, a.var1, a.var2 
    FROM table_A a 
    UNION ALL 
    SELECT b.id, b.var1, b.var2 
    from table_B b 
) unioned; 
0

Tôi có truy vấn tương tự đang hoạt động. Chỉ cần thay đổi tên bảng và tên cột. Thử cái này. Hy vọng điều này sẽ giúp bạn.

create table new_table as 
select 
distinct 
id, name 
FROM 
table1 
union all 
select 
distinct 
id,name 
from 
table2 
;