2012-11-19 128 views
15

由於沒有IFNULLISNULL,或NVL函數支撐在配置單元,遇到麻煩轉換NULL爲0。我試圖COALESCE(*column name*, 0)但接收到的以下錯誤消息:COALESCE與蜂房SQL

參數類型0失:合併後的表情都應該 具有相同的類型:「BIGINT」預期,但「INT」發現

如何解決這個問題?

+4

實現你有沒有試過'COALESCE(列,CAST(0 AS BIGINT))'? – Lamak

+0

蜂巢0.11以上,現在有NVL功能。請參閱 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions – gyan

回答

19

正如拉馬克在評論中指出的那樣,COALESCE(column, CAST(0 AS BIGINT))解決了這個錯誤。

3

由於0.11 hive有一個NVL函數 nvl(T value, T default_value)

它說 返回默認值,如果值爲null否則返回值

0
nvl(value,defaultvalue) as Columnname 

將缺省值設置爲默認值指定

0

如果客戶主要聯繫媒體是電子郵件,如果電子郵件爲空然後phonenumber,並且如果phonenumber也爲空然後地址。它將使用聚結成

coalesce(email,phonenumber,address) 

寫入,而在蜂房同樣可以通過NVL鏈接在一起

nvl(email,nvl(phonenumber,nvl(address,'n/a')))