我正在使用MapR Hive分佈在HDFS上並面臨以下問題。 如果對於表格類型爲「日期」類型,則NVL函數不起作用。其他數據類型也一樣。Hive NVL不適用於列的日期類型 - NullpointerException
它只是拋出
NullpointerException:Null
即使解釋函數拋出同樣的異常。
請在這裏幫忙。它是Hive發行版中的錯誤嗎?
我正在使用MapR Hive分佈在HDFS上並面臨以下問題。 如果對於表格類型爲「日期」類型,則NVL函數不起作用。其他數據類型也一樣。Hive NVL不適用於列的日期類型 - NullpointerException
它只是拋出
NullpointerException:Null
即使解釋函數拋出同樣的異常。
請在這裏幫忙。它是Hive發行版中的錯誤嗎?
我解決了自己的問題與解決方法:
對於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
你也可以使用原始請求NVL,如
NVL(nt.assess_dt, cast('9999-01-01' as date))