即使在hive中使用coalesce,也能看到null

ubbxdtey  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(486)

即使在使用

  1. coalesce(x.coulmn, 0)

加载数据时。列是一个 smallint 数据类型。如果有人遇到过这种问题,请告诉我。

  1. coalesce(cntdim.epsd_ind, 0) as epsd_ind

这应该返回0或1,但是我在目标中得到null。

6kkfgxo0

6kkfgxo01#

当输入数据无法转换为目标数据类型时,也面临同样的问题。当无法转换时,配置单元会在插入过程中将其静默地转换为null。要避免这种情况,请使用cast()应用显式转换:

  1. coalesce(cast(x.coulmn as smallint), 0)

在这种情况下,如果值不能转换为 smallint ,演员将返回 NULL , coalesce 会回来的 0 . 或者使用其他方法来确保插入的是兼容的或完全相同的数据类型。
没有 cast() 如果 x.column 不为null且无法转换为smallint, coalesce 将返回值,并且值将作为null插入:

  1. coalesce(x.coulmn, 0)

在日期列中插入字符串时,也可以观察到类似的问题。如果字符串格式错误,比如 '2017-01-010000' 它将毫无例外地转换为null。有趣的是, bigint 插入 int 在配置单元1.2中,x被截断以适合int,而不是转换为null。

相关问题