在sas中查找未压缩的数据集大小

在sas中查找未压缩的数据集大小,sas,dataset,size,Sas,Dataset,Size,我有一个压缩数据集的列表,我需要这些数据集解压时的大小 我尝试了proc contents,attrn函数,但当将它们应用于压缩数据集时,我可以得到当前状态下数据集的大小(压缩) 我在网上搜索,我可以看到找到数据集大致大小的技术,但我无法使用这些技术找到数据集的确切大小 与此类似,压缩数据集大小为62MB,而未压缩数据集大小为629MB。现在我只有压缩的数据集,我想找到未压缩的数据集的大小,而不需要实际解压缩数据 这可能吗。请分享你的想法。提前感谢我怀疑是否可能得到准确的答案,但您应该能够在不做

我有一个压缩数据集的列表,我需要这些数据集解压时的大小

我尝试了proc contents,attrn函数,但当将它们应用于压缩数据集时,我可以得到当前状态下数据集的大小(压缩)

我在网上搜索,我可以看到找到数据集大致大小的技术,但我无法使用这些技术找到数据集的确切大小

与此类似,压缩数据集大小为62MB,而未压缩数据集大小为629MB。现在我只有压缩的数据集,我想找到未压缩的数据集的大小,而不需要实际解压缩数据


这可能吗。请分享你的想法。提前感谢

我怀疑是否可能得到准确的答案,但您应该能够在不做太多工作的情况下做出合理准确的估计


SAS数据集是按行压缩的。从压缩数据集中选择一小部分具有代表性的行样本,创建一个新的未压缩数据集,找到其大小,然后按采样率的倒数缩放以估计完整数据集的大小。这并不准确,因为某些行的压缩效果比其他行好,但您应该能够通过更大的样本获得更准确的估计。

运行
proc contents
并计算
总和(长度)*nobs
,即每行字节数乘以行数。表的实际大小只是稍微大一点(我认为是恒定的字节数;编辑::它不是恒定的。但是如果您需要近似的数字,这种方法就可以了)


另一个选项是使用压缩表的大小和压缩比(创建/修改表时,应该在日志中看到它)。只需将压缩表大小除以百分比。

找到变量的长度,该长度的总和即为每行的长度。乘以行数将得到一个近似值。未压缩表的大小

例如,表中有变量x和变量y,观察总数为1000000。 x的长度为10,y的长度为20,那么一个观测值大小将为30字节

因此,总大小将为30*1000000=3000000字节=3MB

请记住,在未压缩的表中,页面和观察开销较小,所以实际大小将略小于3MB