使用超过15位的数字变量将sas数据写入配置单元

6xfqseft  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(443)

我正在尝试使用sas将sas数据写入配置单元。我在表中有一个id变量,它的长度大于15位,当我将此数据写入配置单元时,我需要将此变量保持为数字。我尝试了下面的脚本,但是它给了我下面的警告,并且配置单元表中的值被截断为15位,带有一个“e”。

data scr.EOB_tgt(dbtype=(nacct="BIGINT"))
;
format nacct best20.
ncust $10.
;
set lat2(keep=ncust nacct bal);
run;

NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
WARNING: Value 1589000007877656 has more than 15 digits.  It may not be accurately inserted to the BIGINT column.

有人知道如何克服这个问题吗?
我想能够得到完整的16位数字值在配置单元表

jk9hmnmh

jk9hmnmh1#

sas将所有数字存储为8字节浮点。所以不能用超过15位的整数来精确表示。要查看可以精确表示的最大整数,请使用constant()函数。

data _null_;
  x=constant('exactint');
  put x 16. +1 x comma21.;
run;

结果:

9007199254740992 9,007,199,254,740,992

因此,如果您有任何大于9007199254740992的id值,则不能将它们作为数字存储在sas中。
为什么要将id值存储为数字?不需要对id值执行算术运算。

相关问题