2016-03-11 12 views
5

Ho bisogno di unire la tabellaA alla tabellaB su employee_id e il cal_date dalla tabella A deve essere tra l'inizio della data e la fine della data dalla tabella B. Ho eseguito sotto la query e ricevuto sotto il messaggio di errore, Vorresti per favore aiutami a correggere e interrogare. Grazie per il tuo aiuto!Unire tabelle su intervallo di date in Hive

Entrambi gli alias di sinistra e destra si incontrano in JOIN "date_start".

select a.*, b.skill_group 
from tableA a 
    left join tableB b 
    on a.employee_id= b.employee_id 
    and a.cal_date >= b.date_start 
    and a.cal_date <= b.date_end 
+0

utilizzare 'a.cal_date tra b.date_start e b.date_end' –

+0

Grazie per l'input. Mi ha dato un errore simile con la tua sintassi. Sia gli alias di sinistra che di destra incontrati in JOIN "date_end" – Mixer

risposta

3

RTFM - citando LanguageManual Joins

Hive non supporta unirsi a condizioni che non sono le condizioni di uguaglianza in quanto è molto difficile esprimere tali condizioni come una mappa/ridurre lavoro.

Si può provare a spostare il filtro BETWEEN in una clausola WHERE, risultando in una unione parzialmente cartesiana scadente seguita da una pulizia post-elaborazione. Che schifo. A seconda della cardinalità effettiva della tabella "gruppo di abilità", potrebbe funzionare rapidamente o impiegare giorni interi.

Problemi correlati