Powerbi:提高powerbi运行速度 [转载]

From:https://www.sohu.com/a/307969611_584557
PowerBI是一个强大的工具,它的大数据处理能力、丰富的可视化对象、便捷的交互体验正在改变越来越多的人查看数据的方式。

但同时也有很多人抱怨PowerBI运行速度太慢:打开慢、刷新慢、响应慢,你在使用过程中是不是也有此体会呢?

本文就来谈谈如何高效的使用PowerBI,这里的高效,是指当你有一个想法并告诉PowerBI,它能快速响应你的操作,得出期望的结果,而不是漫长的等待。

当然导致PowerBI运行速度慢的原因有很多,比如设备因素、网络速度、数据的量级等等,抛开这些客观因素,这里主要说一下,你平时的操作习惯,也许是拖慢PowerBI的主要原因。

关于如何高效的使用PowerBI,这里有15条建议,希望对你有帮助:)

01 过滤源数据
仅从数据源导入需要的数据表,而避免导入与分析无关的数据。

比如你只是分析销售情况,把订单表和相应的维度表导入进来就可以了,没有必要把人事、物流等各种数据也导进来。

即使是导入订单表,也仅导入分析所需的行,如果你要分析的是过去三年的情况,就不要试图导入所有的历史记录。

02 删除无关列
删除与分析无关的列,可以显著的降低内存占用。

比如从CRM系统提取过来的订单表,可能有几十列,而分析需要的可能只是某几列,那么其他的数据列要果断的删除。

03 聚合分析粒度
数据源中的表经常是最细颗粒度的数据,及时聚合到分析的维度是必要的。

比如订单表, 订单时间可能精确到某一天的几点几分几秒,而要分析的粒度可能是月份、季度和年份,那么尽早将数据聚合到分析的粒度,就可以显著的降低数据的行数。

04 整理字段
数据导入进来以后,一般情况下我们只是看看数据类型是否正确,而不做更细的整理,其实以下的操作可以减少内存的占用:

舍入数字以删除多余的小数位;

将日期中不用的分秒数据舍去;

将日期时间型数据拆分为日期列和时间列;

将可拆分的一个文本列,拆分为两列,比如某一列的数据是省份+城市,将其拆分为省份列和城市列。

05 禁用不必要的加载
对于最终模型中不需要的表,禁用加载至关重要。

从数据源将导入数据到PowerQuery编辑器之后,我们一般会进行各种转换,比如将多个表合并到一个表中,或许最终我们使用的是合并表。但在默认情况下,点击"上载"之后,PQ中的所有表都会加载到Power BI模型的内存中。

选中不需要的表,右键>属性:去掉“启用加载到报表”的勾选,

在属性窗口,还有一项可以设置,如果某个表是固定的数据,不需要刷新,可以只加载,而不刷新数据,同样节省数据处理时间。

06 禁用系统日期表
禁用内置的日期表,可以提升PowerBI的运行速度。

PowerBI 会自动为模型中的每个日期字段创建内置日期表,以支持时间智能函数。这些表是隐藏的,它们消耗内存,因此及时打开选项,去掉“自动日期/时间”的勾选,

并且系统日期表无法灵活的添加自定义列,建议大家进行数据分析时,创建自己的日期表,关于日期表的制作请参考:玩PowerBI必备的日期表制作方式汇总。

07 选择适当的数据类型
确保所有列都具有正确、精准的数据类型,我们往往更关注类型是否正确,而不太关注类型是否精准。

比如:我们一般更关注是文本型还是数值型,而对于数值型,其实还可细分为整数型和小数型,他们两个都是数值型,不会影响运算结果,但会影响运算效率,尽量直接修改为最合适的数据类型,可以用整数型就不要用小数,能用定点小数就不要用浮点小数。

08 选择合适的连接方式
Power BI主要有两种连接模式:import和DirectQuery,对于一般的数据源,应尽可能使用import方式将数据导入到PowerBI,Import利用Power BI的高性能查询引擎,为你提供高度互动和全功能的体验。

但是,如果通过import无法满足你的目标,请考虑使用DirectQuery。

关于DQ的优势和限制,请参考官方文档:

https://docs.microsoft.com/en-us/power-bi/desktop-directquery-about

09 避免使用计算列
从Excel带过来的“坏习惯“之一就是更偏好使用计算列,它的结果可以直观看到,但计算列带有隐藏成本,它更消耗内存,会增加数据刷新时间。

一种更有效的方法是使用度量替换计算列,度量值不占用内存,只有在上下文中才进行计算,所以尽早养成使用度量值的好习惯!

10 不断优化DAX
刚开始学习时,对DAX的要求很低,只要能正确的计算出结果就行,但随着学习的深入,你还应了解一些函数的计算原理,不断寻找更好的函数和更快的代码。

比如:SUMMARIZECOLUMNS函数的性能明显优于ADDCOLUMNS+SUMMARIZE组合;使用VAR定义变量的方式处理速度会更快等。

解决同一个问题,会有不同的方案,识别并选择最优的那一个!

这方面需要不断积累。

11 尽量使用默认可视化对象
能用默认的图表就不要使用自定义图表,能用简单的图表进行表达的,就不要使用高度复杂的可视化。

比如能用简单柱形图就可以清晰展现的,就没有必要使用地图。

(来源:经济学人)

当然这条建议主要看你的内在需求,你需要在运行速度和展现效果之间做出权衡。

12 避免直接展示明细数据
如果你的某个维度有数万个数据点,如果你打算在画布上使用表格或者图表全部展示出来,可能需要几秒甚至几分钟才能刷新出来,这种体验是不可接受的。

最佳做法是,只展示重点关注的信息,比如该维度的前20名,可以利用筛选器,轻松筛选出需要的数据,并提升计算性能。

13 避免过度使用交互
在PowerBI中可以创建丰富的交互式报表,功能强大、操作简单,可同时在多个图表,甚至多个页面实现动态联动。

但每次的交互联动,都会触发多个查询,很可能会拖慢数据刷新速度,最佳做法是仅为相关的报表设置动态响应,移除无关的报表筛选,避免不必要的同步切片器等。

(关于交互的编辑可参考:PowerBI技巧:编辑交互)

14 简化设计
很多人可能都是被PowerBI炫酷的可视化吸引过来学习的,所以初学者常犯的错误是创建过于“复杂”的报表。

比如单页放置过多的图表、图表中显示详细数据、无节制的使用控件等,最终生成看起来花哨但运行缓慢且低效的报表或仪表板。

使用PowerBI与万事万物一样,物极必反,过犹不及。不要试图把你想表达的内容都放到一个大而全的报表中,你应该引导用户逐步深入探索更细粒度的数据,而不是一次全部展示出来。

简化设计,少即是多。

15 定期更新PowerBI Desktop
PowerBI在迅速迭代,不断提升性能,可能你没有作任何改变,仅仅是升级到最新版,就可以大大提升运行速度。

所以一定要养成定期更新的好习惯(win10系统可以自动更新),并且,如果你的电脑是64位的系统,就不要安装32位的软件。

上面的这些建议,在你日常使用PowerBI时,注意到了几个呢?

当然如果你处理的数据很少,以上多数建议都无关紧要,你尽可以简单粗暴地解决问题。但是,当你开始处理更大量级的数据、更复杂的数据模型时,你的简单粗暴带来的不良影响,也会量级性的放大,此时,你应该深入思考这些建议。

当你感觉到你的报表正变得越来越迟钝时,这些建议至少可以指引你朝着正确方向努力。

实践出真知,如果你也有优化的建议,欢迎留言分享哦。

公众号回复“PowerBI”,获取更多学习资源,帮你快速精进技能,提升工作效率。

猜你喜欢

转载自blog.csdn.net/qq_41960416/article/details/107002438