十进制值超出范围

ryevplcw  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(452)

我正在尝试将数据从sas环境发布到远程hadoop/hive数据库(作为序列文件)。我正在执行一些基本测试,从业务用户那里获取一些源数据,并使用一个数据步骤写入hadoop库。
我收到错误,表明第x行的值超出范围。
例如:

ERROR: Value out of range for column BUY_RT1, type DECIMAL(5, 5). Disallowed value is: 0.

源数据的数字格式为 6.5 ,实际值为 .00000 .
为什么是 .00000 超出范围?hadoop的格式需要是 DECIMAL(6, 5) ?
当值为 0.09 :

ERROR: Value out of range for column INT_RT, type DECIMAL(5, 5). Disallowed value is: 0.09
xxhby3vn

xxhby3vn1#

您可能需要检查sas中的实际值。如果sas中的某个数值应用了格式,那么无论您在哪里输出该数值,您都会看到该数值的格式化(可能是四舍五入)版本,但是由于格式的原因,底层的数值可能仍然有您看不到的更重要的数字。
例如,您说源数据的格式为6.5,“实际值”为0.00000;你确定这是实际值吗?要进行检查,您可以尝试将该值与文本0进行比较,或者使用不同的格式(如best32)将该值放入sas日志(如 put BUY_RT1 best32.; ).
如果这是一个问题,解决方法是正确地舍入源数值,而不是仅仅应用一种格式。

相关问题