web-dev-qa-db-fra.com

HiveQL UNION ALL

J'ai table_A:

id var1 var2
1   a    b
2   c    d

Table_B:

id var1 var2  
3   e    f
4   g    h

Tout ce que je veux, c'est un tableau combiné:

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

C'est mon .hql:

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;

Je code directement à partir de la page 112 de Programming Hive d’Edward Capriolo, et al.

L'erreur que j'obtiens, quelle que soit la variation apparemment raisonnable de ce que j'ai essayé ci-dessus, est "cannot recognize input near '.' 'id' ',' in select expression."

J'ai essayé d'utiliser "comme" entre le nom de la table et l'alias, astérisques, car je veux tout ce qui est dans les deux tables. Même erreur. J'ai essayé d'autres choses et j'ai eu d'autres erreurs ... Tout ce que je veux faire, c'est UNION deux tables. (J'ai essayé UNION au lieu de UNION ALL - même erreur). 

12
dum_dum_dummy

Il suffit de remplacer tout par un autre mot. Cela semble être un mot clé réservé. Par exemple:

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;
13
Lorand Bendig

J'ai une requête similaire qui fonctionne. Il suffit de changer le nom de la table et les noms des colonnes. Essaye ça. J'espère que cela vous aide.

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