我正在尝试将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
答案 0 :(得分:0)
您可能需要检查SAS中的实际值。如果SAS中的数字值应用了格式,则无论在何处输出该值,您都将看到该数字值的格式化版本(可能是四舍五入的版本),但是由于以下原因,基础数字可能仍具有未显示的更高有效数字:格式。
例如,您说源数据的格式为6.5,“实际值”为0.00000;您确定这是实际值吗?要进行检查,您可以尝试将值与文字0进行比较,或者将值以BEST32之类的其他格式放入SAS日志中。 (例如put BUY_RT1 best32.;
)。
如果这是问题所在,解决方案是正确舍入源数字值,而不仅仅是应用格式。