COALESCE avec Hive SQL

Puisqu'il n'y a pas IFNULL, ISNULL, ou NVL Fonction supportée sur Hive, j'ai du mal à convertir NULL En 0. J'ai essayé COALESCE(*column name*, 0) mais j'ai reçu le message d'erreur ci-dessous:

Incompatibilité de type D'Argument 0: les expressions après coalescence devraient toutes avoir le même type:" bigint "est attendu mais" int " est trouvé

Comment résoudre ce problème?

21
demandé sur Bugs 2012-11-20 00:13:16

7 réponses

Hive prend en charge bigint littéral depuis la version 0.8. Donc, " l " supplémentaire est suffisant:

COALESCE(column, 0L)
34
répondu Ivan Klass 2013-02-19 10:06:28

Comme Lamak souligné dans le commentaire, COALESCE(column, CAST(0 AS BIGINT)) résout l'erreur.

20
répondu Parsa 2012-11-19 20:39:07

Depuis 0.11 ruche est une fonction NVL nvl(T value, T default_value)

Qui dit Retourne la valeur par défaut si la valeur est null sinon retourne la valeur

4
répondu kanishka vatsa 2016-11-18 11:53:13

De Langue DDL & UDF De La Ruche

NVL(value, default value) 

Renvoie la valeur par défaut si la valeur est null sinon renvoie la valeur

2
répondu staticor 2016-08-23 03:43:29
nvl(value,defaultvalue) as Columnname

Définira les valeurs manquantes sur defaultvalue spécifié

1
répondu Srikant 2016-11-02 18:15:35

Si le support de contact principal du client est email, si email est null alors phonenumber, et si phonenumber est également null alors address. Il serait écrit en utilisant COALESCE comme

coalesce(email,phonenumber,address) 

Alors que la même chose dans la ruche peut être obtenue en chaînant ensemble nvl comme

nvl(email,nvl(phonenumber,nvl(address,'n/a')))
1
répondu Amit_Hora 2017-07-10 16:47:52

De [Manuel De Langue De La Ruche] [1]:

Coalescence (T v1, T v2,...)

Retourne la première valeur qui n'est pas NULL, ou NULL si toutes les valeurs sont NULL

Https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions

0
répondu Zorayr 2018-02-26 11:32:19