为什么我的Power BI Matrix或Table Visual很慢(下)
//解决方案:调整度量值的性能,设计适当的数据模型//
如果你真的想以正确的方式解决问题,那么你应该考虑两件事:数据模型设计和度量性能。这两者紧密相关。如果没有适当的数据模型设计,你就无法获得良好的性能指标。在建模和计算最佳实践时,需要讨论大量细节。这篇文章不适合讨论它。
下来列出Power BI实现构建适当的数据模型,需要要掌握的知识点:
什么是关系?
什么是关系的基数?
关系的方向是什么?
数据准备
什么是Dimension表以及为什么对一个大表说不
Power BI中的建模基础:事实表
使用Power Query在Power BI中组合维度表; Power BI中的建模基础
星型架构及其构建方法
使用Power Query和Power BI创建共享维度
构建你的第一个星型模式模型
大多数时候,我看到有许多表格的模型都具有双向关系,因此性能问题,请认真考虑星星模型设计!
在Power BI Desktop中,我们有性能分析器,它有助于找出哪些视觉运行较慢,并找出它的DAX计算,以便能够进一步提高性能。我们在这之前已发过相关文章介绍PowerBI的性能分析器。
//解决方案:考虑预先计算//
并非所有计算都应在运行时完成,有许多计算应该逐行进行,可以预先评估大多数逐行计算。然后,切片器的选择将仅过滤输出中的行数,并且聚合也会在过滤的行上发生,实际的逐行计算事先发生了。有两种方法可以事先进行计算; 使用计算列或使用Power Query。这边强烈推荐Power Query方法。如果你的方案中存在逐行计算,请通过Power Query执行此操作。然后,度量值可以更简单,它可以在它上面聚合。
//解决方法:减少计算次数//
最终解决方案是一开始提到的;要设计合适的模型,性能会调整度量计算,并对Power Query进行更多逐行计算。
因此,解决方法是减少计算次数。你怎么能减少它?减少行数(在表格和矩阵中),和/或减少矩阵中的列数,并减少度量数量(表格或矩阵中的值)。具有五行的表将具有一半的计算而不是具有10行的表。具有10行和5列的矩阵将比具有100行和5列的矩阵少10倍的计算。这只是简单的数学。
你可能会说,但我想显示详细的数据,我无法删除它,这是这样做的方法:
//考虑主 - 详细报告设计//
如果你的矩阵和表格视觉效果显示详细数据,那么该用户将仅浏览选定过滤器的页面。你需要拥有一个母版页(或多个母版页),然后在Power BI中使用钻取功能,让用户能够导航到详细信息。使用钻取将在到达详细信息页面时过滤数据,因此,计算次数会更少,性能会更好。
//总结//
在Power BI中,矩阵和表格视觉效果并不慢!它们很慢的原因是数据模型不好以及执行性能不佳的度量值。最佳的解决方案是正确设计数据模型,并调整计算性能。也有一些小技巧,例如使用Power BI中的钻取过滤器减少计算次数。