2016-09-23 2 views
0

Ich versuche eine linke Join in Hive-Abfrage, aber es scheint nicht zu funktionieren. Sie gibt mir Spalten nur von links Tabelle:Hive-Abfrage funktioniert nicht wie erwartet

create table mb.spt_new_var as select distinct customer_id ,target from mb.spt_201603 A 
    left outer join mb.temp B 
    on (A.customer_id=B.cust_id); 

Ich habe versucht, einige Sätze aus der Tabelle B die Auswahl auf dem einige zufällige customer_id aus Tabelle A basiert und es gibt einige Datensätze. Aber wenn ich den linken Join in Tabelle A versuche, gibt er mir nur Spalten aus Tabelle A zurück. Der Datentyp beider IDs ist gleich (int). Was könnte der mögliche Grund dafür sein?

Probe Tabelle A:

Customer_account_id target 
12356    1 
34245    0 
12356    1 
....    .. 

Probe Tabelle B:

Cust_id col1 col2 col3 
12356  .. 
12567  .. 
24426  .. 
... 

Tabelle A 1m einige Aufzeichnungen hat, während Tabelle B einige Datensätze 30m hat. Es gibt einige doppelte IDs in Tabelle A und Tabelle B.

+0

Sie bitte Ihre Frage bearbeiten und Beispieldaten zur Verfügung stellen und die Ergebnisse, die Sie bekommen (und was Sie erwarten). Deine Beschreibung der 'linken Verbindung' klingt wie die Art, wie sie funktionieren soll. –

Antwort

0

Ich bin ein bisschen verwirrt. Hive ist die Spalten der Rückkehr, die Sie in der Abfrage angeben:

select distinct a.customer_id, a.target 
from mb.spt_201603 a left outer join 
    mb.temp b 
    on a.customer_id = b.cust_id; 

Wenn Sie Spalten aus der zweiten Tabelle wollen, müssen Sie sie auswählen:

select distinct a.customer_id, a.target, b.col1, b.col2 
from mb.spt_201603 a left outer join 
    mb.temp b 
    on a.customer_id = b.cust_id; 
+0

Ich versuche, a, customer_id, a.target, b. *, Aber es ist werfen Fehler: TOK_ALLCOLREF wird nicht im aktuellen Kontext unterstützt – muni

+0

In anderen Datenbanken, etwas aus Tabelle A auswählen und dann links Join funktioniert. Es ist nur so, dass ich auch die b.cols angeben musste. Vielen Dank! – muni

Verwandte Themen