Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS-大小字符和数字_Sas - Fatal编程技术网

SAS-大小字符和数字

SAS-大小字符和数字,sas,Sas,我试图估计SAS文件夹中所有表的大小。有人知道长度为1的字符字段和长度为1的数字字段的大小吗?一旦计算出来,我计划将列的长度乘以列的数量,然后再乘以记录的数量来估计表的大小 上面的陈述可能不清楚,所以我将用一个例子来澄清。假设长度为1的字符字段是1字节,长度为1字节的数字字段,然后100条记录和2列,将被计算为200字节(1*2*100) 谢谢。字符字段的长度为一个字节;e、 例如,长度x$1是一个字节。但是,每行的宽度是恒定的,除非使用了一些压缩-因此,如果它是长度x$8但x='Hi',它仍然

我试图估计SAS文件夹中所有表的大小。有人知道长度为1的字符字段和长度为1的数字字段的大小吗?一旦计算出来,我计划将列的长度乘以列的数量,然后再乘以记录的数量来估计表的大小

上面的陈述可能不清楚,所以我将用一个例子来澄清。假设长度为1的字符字段是1字节,长度为1字节的数字字段,然后100条记录和2列,将被计算为200字节(1*2*100)


谢谢。

字符字段的长度为一个字节;e、 例如,
长度x$1
是一个字节。但是,每行的宽度是恒定的,除非使用了一些压缩-因此,如果它是
长度x$8
但x='Hi',它仍然需要8个字节(从技术上讲,x='Hi')。Format通常用于定义字符变量的默认长度,但存储长度可能与formatted length不同(尽管这通常是一个错误)

默认情况下,数字字段的宽度为8字节,与格式化宽度无关(即,
format x BEST12。
仍然需要8字节来存储,就像
format x 2。
一样)。您可以通过
长度
将其更改为较小的数量,尽管您会失去精度;它可能只有3个字节。在标准SAS中,它永远不会超过8个字节(我认为在
DS2
中,您现在可以使用更大的数字了吧?)

关于估算表大小的问题: 如果已经创建了表,则可以通过
PROC CONTENTS
dictionary.tables
确定其记录长度。“观测长度”(
obslen
)是用于存储每个观测(行)的字节数;“Bufsize”是缓冲区大小,它决定了每页数据的大小(行完全存储在页面上,而不是跨页面存储,因此您需要确定页面中适合的行数,即Bufsize/ObsLen

存储元数据需要一些额外的开销,通常是额外的一页,但这会让您非常接近


为此已经创建了多个宏;user667489链接到SUGI 27的注释中的一个宏。Michael Raithel还为SAS创建了一个宏,该宏在其文档中链接。

您可能会发现这很有用:我可以问一下您为什么要这样做吗?它是用于创建白皮书状态之类的传输数据集还是用于anot她的理由?