L'Expression “n'EST PAS NULLE” ne fonctionne pas sur les requêtes HQL
Quand je fais une instruction select pour les valeurs non nulles sur un tableau de la ruche, il n'y a pas des résultats corrects dans la réponse. Le résultat est comme si "n'est pas nulle" l'expression n'est pas là!
Exemple:
select count(*)
from test_table
where test_col_id1='12345' and test_col_id2 is not null;
Note test_col_id1
et test_col_id2
ne sont pas des clés de partition.
Voici ma ruche version.
Ruche 0.14.0.2.2.0.0-2041
Voici le tableau:
... | test_col_id1 | test_col_id2 |
... | 12345 | x |
... | 12345 | NULL |
Cette requête renvoie les 2 dossiers.
Quel genre de SerDe utilisez-vous: le Texte, la Séquence, l'AVRO, Parquet, ORC? Et lorsque vous sélectionnez une ligne avec une valeur que vous pense est Nul, qu'il ne montre que "null ou une chaîne vide?
La version de la Ruche? À l'aide de TEZ (la version) ou de la plaine MapReduce?
Je suis en train de faire l'interrogation en ligne de commande. Quand j'ai une requête à l'enregistrement, je vois un NULL sur la ligne de commande.
La version de la Ruche? À l'aide de TEZ (la version) ou de la plaine MapReduce?
Je suis en train de faire l'interrogation en ligne de commande. Quand j'ai une requête à l'enregistrement, je vois un NULL sur la ligne de commande.
OriginalL'auteur Naveen Karnam | 2016-05-19
Vous devez vous connecter pour publier un commentaire.
Essayez la requête suivante, est-il renvoyer les lignes?
Alors votre
NULL
n'est pasNULL
, c'est la chaîne de caractères 'NULL'. Des tas de gens ont des problèmes avec la Ruche traitement deNULL
cordes. Par défaut, c'est la chaîne vide''
. Si nous voulons autre chose, nous devons préciser exactement la façon dont les chaînes vides doivent être traités lorsque nous créons la table. Voici 3 exemples de la façon de changer ce qui est reconnu commeNULL
. Le premier définit la valeur 'NULL' les chaînes de caractères commeNULL
:Puisque vous avez déjà créé votre tableau, vous pouvez modifier votre tableau, de sorte qu'il reconnaisse votre
'NULL'
commeNULL
:OriginalL'auteur Edward R. Mazurek
Ruche analyser la valeur NULL dans une manière différente.
Ruche ne considère pas vide, la valeur est NULL. Toutefois, par défaut, la Ruche utilise
\N
pour représenterNULL (pas un caractère spécial, juste la barre oblique inverse, plus le capital de la lettre N).
Si vous voulez juste de filtrer toutes les valeurs vides, vous pouvez utiliser
where test_col_id2 != ''
Si vous utilisez la véritable valeur NULL dans votre fichier texte d'origine qui a été chargé dans la table de la ruche, vous pouvez essayer de
where test_col_id2 != '\000'
car le Code ASCII de la valeur NULL dans octonary est 00 et le premier "0" signifie que c'est un octonary nombre.
Par ailleurs, vous pouvez également utiliser la commande:
de personnaliser la valeur NULL "abc" si vous voulez de la Ruche pour analyser "abc" comme la valeur NULL d'une table.
OriginalL'auteur Jing He