2015-08-28 118 views
3

我正在使用MapR Hive分佈在HDFS上並面臨以下問題。 如果對於表格類型爲「日期」類型,則NVL函數不起作用。其他數據類型也一樣。Hive NVL不適用於列的日期類型 - NullpointerException

它只是拋出

NullpointerException:Null 

即使解釋函數拋出同樣的異常。

請在這裏幫忙。它是Hive發行版中的錯誤嗎?

回答

3

我解決了自己的問題與解決方法:

對於Date類型,你可以使用如下蜂房COALESCE功能:

COALESCE(nt.assess_dt, cast('9999-01-01' as date)) 

以上回答可以作爲解釋:

  • 查找nt.assess_dt(這是一個date類型列);如果是null則獲得COALESCE函數中的下一個值;這是上面例子中的非空值,因此將返回。

請注意,它與NVL有點不同,其中COALESCE返回的值需要是相同的類型。因此在上例中COALESCE不能返回空白''

由於這個原因,我使用了非常大的日期值9999-01-01來表示null值並區分了真正的日期值。如果您的日期列確實可以將此大數值確定爲有效值,那麼您應該考慮使用其他有效日期值來表示null日期。

獲取更多關於這個和其他替代here

0

你也可以使用原始請求NVL,如

NVL(nt.assess_dt, cast('9999-01-01' as date)) 
相關問題