Ho due tabelle, tabella1 e tabella2. Ciascuno con le stesse colonne:Confronto di due tabelle per l'uguaglianza in HIVE
key, c1, c2, c3
voglio controllare per vedere se queste tabelle sono uguali a vicenda (hanno le stesse righe). Finora ho questi due query (<> = non uguale a HIVE):
select count(*) from table1 t1
left outer join table2 t2
on t1.key=t2.key
where t2.key is null or t1.c1<>t2.c1 or t1.c2<>t2.c2 or t1.c3<>t2.c3
E
select count(*) from table1 t1
left outer join table2 t2
on t1.key=t2.key and t1.c1=t2.c1 and t1.c2=t2.c2 and t1.c3=t2.c3
where t2.key is null
Quindi la mia idea è che, se un conteggio a zero viene restituito, le tabelle sono gli stessi . Tuttavia, sto ottenendo un conteggio zero per la prima query e un conteggio diverso da zero per la seconda query. In che modo differiscono esattamente? Se c'è un modo migliore per controllare questo, fammelo sapere.
Per il primo, se so che nessuno dei le colonne sono nulle, questo implica che controlli se i tavoli sono uguali? Non sono completamente sicuro delle implicazioni della tua prima affermazione. @KlasLindback – Danzo
@Danzo Sì, è sufficiente che una delle tabelle non abbia valori nulli. –