是不是常常有企业在和一些大数据集的客户合作的时候,我们的BI伙伴经常会面临这么一个挑战:我们是否有比较有效的的方法减少和降低内存的消耗,同时仍然可以看到应有的指标。
01接受挑战!
事实上,我们已经采取过多种优化措施:减少基数,删除不需要的列,并确保所需的数据加载到数据集中等。但即使我们这样做了,我们的数据集大小仍在Azure Analysis Services中消耗90GB的内存,所以并没有太大起色。
那还有没有更好的办法呢?下面跟大家分享一个技巧,我们可以通过以下步骤将数据集的大小缩减到37GB!
02原始数据集大小
如图所示,我们原来的PBIX原始大小为5.01MB。
当运行这个数据集时,它消耗了大约20MB的内存。
03使用十进制减少数据集大小
我们通过阅读有关数据类型的文档时,可以将数据类型从“十进制数”更改为“固定十进制数”,这样可以节省数据集的大小。
我们把数据类型变为固定小数,保留4位小数。
我们确保如果将列中的值更改为仅保留小数点后4位,总数将保持不变。
如下所示,将列SalesAmount_EUR的数据类型设置为“十进制数”。
接下来,我们保留4位小数的值,如下所示。
现在,当我们保存PBIX时,它从5.01MB变为4.18MB。
这样可以节省大约16%,最初我们认为这也还不错。
但是我们觉得应该还有办法能让数据集内存优化到更小,是什么呢?我们继续看下文。
04使用整数使数据集真正小而有效
有这么一个想法:如果现在可以将SalesAmount_EUR拆分到单独的列中怎么办?
那意味着我们可以两列整数。不仅如此,十进制值的基数也会大大减少。
我们立即开始尝试,并使用TSQL(你可以再次使用Power Query)将列拆为2列。但现在有个问题要解决的是:当我有一个负值时,要保证我的拆分列也为负!
拆分数据后,要确保拆分列的数据类型都设置为“整数”。
做到这一步,真心希望这可以满足我们的需求:大大节省数据集和内存大小。
当我保存文件时,它已降至1.75MB。
下面我们通过一个Power BI视觉文件,来测试对比看看我们到底可以节省了多少内存资源。
如上所示,数据集的大小减少了65%。
内存大小也从19MB减少到2.1MB。
现在,我需要在DAX度量中添加一些其他逻辑以将这两列组合在一起以表示相同的值。
我们也对此进行了测试,并且由于数据集的大小要小得多,因此结果是数据集的大小,数据的大小和列的层次结构的大小都变小,这意味着超快速的SSAS引擎可以更快地处理数据。
这是我们如何一次将这些值重新组合在一起
1 2 3 |
Sales Amount EUR = SUM ( Data[SalesAmount_EUR] ) + ( DIVIDE ( SUM ( 'Data'[SalesAmount_EUR_Cents] ), 10000 ) ) |
05结论
正如我们所展示的,有时可以使用一些非常有创意的方法来减少数据集的大小,你们觉得呢?
技术交流
1.Power BI免费下载:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下载地址
2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。
Power Data技术交流群:702966126 (验证注明:博客园Power BI)
更多精彩内容请关注微信公众号:悦策PowerBI
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,作者博客:https://www.cnblogs.com/yeacer/