Ich versuche, eine Tabelle (Tabelle 2) in Hive aus einer anderen Tabelle (Tabelle 1) zu erstellen. Ich versuche, bestimmte Zeilen mit NULL-Werten auszuschließen und habe die folgende Bedingung versucht.
%Vor%Wenn ich jedoch diese folgende Abfrage mit der neuen Tabelle versuche, bekomme ich 300+ Zeilen mit NULL-Werten:
%Vor%Könnte jemand auf das hinweisen, was diese NULL-Werte verursacht?
Danke.
Ravi
Erstens - ich denke nicht, dass column1 is not NULL or column1 <> ''
sehr sinnvoll ist. Vielleicht wollten Sie column1 is not NULL and column1 <> ''
( AND
anstelle von OR
) schreiben?
Zweitens - wegen des Ansatzes "Schema on read" von Hive für Tabellendefinitionen werden ungültige Werte in NULL
konvertiert, wenn Sie von ihnen lesen. Wenn zum Beispiel table1.column1
vom Typ STRING
und table2.column1
vom Typ INT
ist, dann denke ich nicht, dass table1.column1 IS NOT NULL
genug ist, um table2.column1 IS NOT NULL
zu garantieren. (Ich bin mir aber nicht sicher.)
Was ist der Datentyp für Spalte1 in Ihrer Hive-Tabelle? Bitte beachten Sie, dass, wenn Ihre Spalte STRING ist, sie keinen NULL-Wert haben wird, obwohl Ihre externe Datei keine Daten für diese Spalte enthält.
Um nach den NULL Daten für spalte1 zu suchen und Ihren Datentyp als String zu betrachten, können Sie den folgenden Befehl verwenden:
%Vor%Versuchen Sie es mit isnull (a), isnotnull (a), nvl () usw. Bei einigen Versionen (möglicherweise in Verbindung mit den Servereinstellungen - zumindest mit der, an der ich gerade arbeite) der 'IS NULL' und Die Syntax 'IS NOT NULL' führt die Logik beim Kompilieren nicht aus. Weitere Informationen finden Sie hier .