我正在使用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))