问题描述
我尝试进行一些优化以减小表格模型的总体尺寸。
在许多文章中,我们发现最好的解决方案是删除不必要的列并将具有高基数的列拆分为两个或更多列。
我专注于第二个提示。
进行一些更改后,我的数据量更大了,我也不知道为什么。我使用VertiPaq分析指标。
更改前(表大小4463282609行) sar_Retail基数718621和大小224301336 B
更改后 sar_Retail_main基数1663和大小89264048 B
sar_Retail_fraction基数10001和大小302518208 B
如您所见,新列的总大小需要更多空间(167480920 B)
我通过以下语句拆分列:
,ROUND(sar_Retail,0) sar_Retail_main,4) - ROUND(sar_Retail,0) sar_Retail_fraction
解决方法
如果您能提供 Vertipaq 分析器的 .vpax 输出(列拆分之前和之后),将会很有帮助。
我不确定您在表格方面使用的是哪种数据类型,但如果您需要存储只有 4 位小数精度的数字,您绝对应该使用货币/固定小数类型。它允许精确到 4 位小数,并且内部存储为整数乘以 10 000。与浮点数据类型相比,它节省了大量空间。您可以尝试在不拆分列的情况下使用它并查看影响。
我还建议检查行程编码的工作原理。根据最少变化的列对数据进行预排序可以大大减少表的大小。当然它可能会减慢处理时间