由於沒有IFNULL
,ISNULL
,或NVL
函數支撐在配置單元,遇到麻煩轉換NULL爲0。我試圖COALESCE(*column name*, 0)
但接收到的以下錯誤消息:COALESCE與蜂房SQL
參數類型0失:合併後的表情都應該 具有相同的類型:「BIGINT」預期,但「INT」發現
如何解決這個問題?
由於沒有IFNULL
,ISNULL
,或NVL
函數支撐在配置單元,遇到麻煩轉換NULL爲0。我試圖COALESCE(*column name*, 0)
但接收到的以下錯誤消息:COALESCE與蜂房SQL
參數類型0失:合併後的表情都應該 具有相同的類型:「BIGINT」預期,但「INT」發現
如何解決這個問題?
正如拉馬克在評論中指出的那樣,COALESCE(column, CAST(0 AS BIGINT))
解決了這個錯誤。
蜂巢支持bigint literal since 0.8 version。因此,額外的 「L」 是不夠的:
COALESCE(column, 0L)
從[蜂巢語言手冊] [1]:
COALESCE(T V1,T 2,...)
將返回第一個值,如果所有值的是NULL不是空或NULL
由於0.11 hive有一個NVL函數 nvl(T value, T default_value)
它說 返回默認值,如果值爲null否則返回值
nvl(value,defaultvalue) as Columnname
將缺省值設置爲默認值指定
如果客戶主要聯繫媒體是電子郵件,如果電子郵件爲空然後phonenumber,並且如果phonenumber也爲空然後地址。它將使用聚結成
coalesce(email,phonenumber,address)
寫入,而在蜂房同樣可以通過NVL鏈接在一起
nvl(email,nvl(phonenumber,nvl(address,'n/a')))
實現你有沒有試過'COALESCE(列,CAST(0 AS BIGINT))'? – Lamak
蜂巢0.11以上,現在有NVL功能。請參閱 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions – gyan