Hive 看到空';即使在蜂箱中使用了聚结剂,也会产生过敏反应
即使在使用Hive 看到空';即使在蜂箱中使用了聚结剂,也会产生过敏反应,hive,null,hiveql,Hive,Null,Hiveql,即使在使用 coalesce(x.coulmn, 0) 在加载数据时。列是smallint数据类型。请告诉我是否有人遇到过此类问题 coalesce(cntdim.epsd_ind, 0) as epsd_ind 这应该返回0或1,但我在目标中变为null。当输入数据无法转换为目标数据类型时,我遇到了相同的问题。 无法转换时,配置单元会在插入过程中将其静默转换为NULL。要避免这种情况,请使用cast()应用显式转换: 在这种情况下,如果值不能转换为smallint,则cast将返回NU
coalesce(x.coulmn, 0)
在加载数据时。列是smallint
数据类型。请告诉我是否有人遇到过此类问题
coalesce(cntdim.epsd_ind, 0) as epsd_ind
这应该返回0或1,但我在目标中变为null。当输入数据无法转换为目标数据类型时,我遇到了相同的问题。 无法转换时,配置单元会在插入过程中将其静默转换为NULL。要避免这种情况,请使用cast()应用显式转换: 在这种情况下,如果值不能转换为
smallint
,则cast将返回NULL
,coalesce
将返回0
。或者使用其他方法确保插入的数据类型完全兼容或相同
没有cast()
如果x.column
不为null并且无法转换为smallint,coalesce
将返回值,并且值将作为null插入:
coalesce(x.coulmn, 0)
在将字符串插入日期列时,也可以观察到类似的问题。如果字符串格式错误,例如
'2017-01-010000'
它将毫无例外地转换为NULL。有趣的是,bigint
被插入到hive1.2.x中的int
中,被截断以适合int,未转换为null。编辑问题添加一些示例数据和所需结果将很有帮助。hey@leftjoin感谢您的输入,但源和目标在我的数据库中是相同的数据类型case@2strange:这与您在两个表中定义的数据类型无关…如果您的实际数据不是预期的类型(本例中为smallint),然后蜂巢会显示为空。为了避免这种情况,您可以使用上述建议
coalesce(x.coulmn, 0)