我有一份报告,其中一列包含许多唯一的整数。我看到数据格式是十进制(双精度),我决定将这一列转换为int64(整数)格式。在dax studio中,VertiPaq实际上显示列占用的内存有所减少,但是在桌面版本中保存报表时,报表本身作为文件的权重增加了。怎么会这样?
压缩基于多种因素。不同值的数量和列的排序顺序起着重要作用。 VertiPaq 还将使用一些启发式方法来计算数据的最佳压缩策略,这可能会根据许多不同的变量而改变。
在您的情况下,已使用哈希编码,这需要字典。这也可能会使用游程长度编码,这意味着列的排序顺序可能会使内存占用量发生波动。
VertiPaq 中的数据压缩非常复杂。如果您需要所有详细信息,我可以推荐 DAX 权威指南中的第 17 章。我引用以下摘录。
影响表格模型压缩比的因素是, 按重要性排序:
- 列的基数,定义用于存储值的位数。
- 重复次数,即一列中数据的分布情况。具有许多重复值的列被压缩超过 值经常变化的列。
- 表中的行数。
- 列的数据类型,仅影响字典大小。考虑到所有这些因素,几乎不可能 预测表的压缩率