Power BI数据集内存挑战—节省40%以上!

是不是常常有企业在和一些大数据集的客户合作的时候,我们的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/ 
posted @ 2019-12-24 11:36  PowerBI365  阅读(3209)  评论(0编辑  收藏  举报