【问题标题】:Finding uncompressed dataset size in sas在 sas 中查找未压缩的数据集大小
【发布时间】:2018-07-01 04:59:21
【问题描述】:

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

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

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

就像压缩后的数据集大小为 62MB,而未压缩的数据集大小为 629MB。现在我只有压缩数据集,我想找到未压缩数据集的大小,而无需精确解压缩数据

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

【问题讨论】:

    标签: sas dataset size


    【解决方案1】:

    运行proc contents 并计算sum(length) * nobs,即每行字节数乘以行数。表的真实大小略大(我认为是一些恒定的字节数;EDIT:它不是恒定的。但是如果您需要近似数字,这种方法将做)。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        查找变量的长度,该长度的总和将是每行的长度。乘以行数会给你aprox。未压缩表的大小。

        例如,表有变量 x 和变量 y 以及总共 1000000 次观察。 x 的长度是 10,y 的长度是 20,那么一个观察大小将是 30 字节。

        所以总大小将是 30 * 1000000= 3000000 字节 = 3 MB

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-30
          • 1970-01-01
          • 2012-01-29
          • 2022-08-20
          • 2013-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多