PowerBI 数据建模必备:提升性能的八大技巧

科技   2024-12-18 18:54   江苏  
欢迎关注【BI佐罗数据分析】,今日精华包括:视频案例,技巧干货。

↓ 预约直播,更多干货,不要错过 ↓

 

在 Power BI 中,设计高效的数据模型是实现高性能、可扩展报表的关键。本篇文章将分享设计星型模型、优化存储模式、减少内存消耗及提升数据加载性能的八大实用技巧,帮助你打造一个简洁、高效的数据模型。

采用星型模型设计

星型模型是创建高效、用户友好 Power BI 语义模型的最佳方法。它将数据分为两大类:

  • • 事实表:存储数值型数据,通过外键与维度表相连。(如销售订单)。

  • • 维度表:提供业务实体(如产品、客户、地区)描述性数据,支持筛选和分组操作,简化报告生成,提供数据上下文。

星型模型的优势:

  • • 更易理解和使用

  • • 简化开发和维护

  • • DAX 公式更简单

  • • 加速数据刷新

  • • 减少数据冗余

设计关键点:

  • • 粒度:决定数据的详细程度。高粒度意味着数据更详细,如交易明细,但会增加模型大小。

  • • 规范化:减少冗余,效率更高(适合复杂数据模型)。

  • • 非规范化:将相关数据合并到单个表中,适用于简单数据源,但效率较低。

选择合适的存储模式

Power BI 提供三种存储模式,针对不同场景选择正确的存储模式至关重要。

导入模式

  • • 数据完全缓存到内存中,提供最佳查询性能。

  • • 适用于中小型数据集或不需要实时更新的场景。

DirectQuery 模式

  • • 直接从数据源查询数据,不进行缓存。

  • • 适用于大数据集或需要实时数据的场景。

双重模式

  • • 支持在缓存(导入)和非缓存(DirectQuery)之间动态切换。

  • • 适合复合模型中共享的维度表,提升性能并优化查询。

  • • 通过减少有限关系的数量和优化查询来提高性能。

👉 建议:参考微软文档,了解每种模式的优势、缺点和限制,选择最佳方案,网址:https://learn.microsoft.com/zh-cn/power-bi/transform-model/desktop-storage-mode

移除不必要的表和列

简化数据模型对于性能优化至关重要。随着时间的推移,数据模型可能会积累不必要的表和列,导致刷新时间变长、复杂度增加,用户导航困难。

关键:

  • • 定期识别并安全删除不必要的列和表。

  • • 在删除前确保不影响依赖报告,避免数据断裂。

分组和汇总数据

通过对数据进行分组和汇总,可以有效减少模型大小并提升性能。例如,按天、月或客户预聚合事实表,可以显著减少行数。

虽然这会将模型大小减少多达 90%,但它限制了详细分析。一种平衡的方法是在导入模式下使用聚合表进行快速报告,使用 DirectQuery 表获取详细数据。例如,可以使用导入模式表来获取快速摘要报告(例如,每月销售额),并使用 DirectQuery 模式表来深入浏览各个销售订单。这种组合确保了高性能,同时保持了在必要时分析更精细细节的灵活性。

对大型数据集进行分区

冷热分区通过按数据使用情况拆分表,提高大数据集的性能:

  • • 热数据:近期数据,存储在导入模式中,快速访问。

  • • 冷数据:历史数据,使用 DirectQuery 模式,节省内存并减少导入大小。

主要优势

  • • 提高查询速度,特别是对经常访问的数据。

  • • 高效利用资源,保留历史数据的访问能力。

  • • 减轻数据源压力,仅在必要时查询数据源。

优化关系设计

避免多对多关系

在可能的情况下,尽量避免在数据模型中使用多对多关系,因为它们会使性能变得复杂,并在计算中引入歧义。可以创建一个包含唯一值的桥接表,将相关表连接起来,并从桥接表到事实表建立一对多关系。

避免双向关系

双向关系允许筛选器在两个方向上传播,但由于其可能对性能和用户体验产生负面影响,因此应谨慎使用。Power BI 模型设计者应仔细评估是否有必要使用双向筛选,并在可能的情况下探索替代方案,以保持最佳性能并确保清晰的用户体验。

例如,请考虑使用 CROSSFILTER 函数,而不是创建双向关系。此方法仅在特定计算的范围内激活双向筛选,从而减少与永久双向关系相关的更广泛性能影响。

Crossfilter example =CALCULATE (    SUM ( FactTable[ValueColumn] ) ,    CROSSFILTER ( FactTable[KeyColumn] , DimensionTable[KeyColumn] , BOTH ))

使用日期表

一个设计良好的日期表对于时间智能计算非常重要。

最佳实践

  • • 使用预构建的日期表,避免使用 Power BI 自动生成的层级。

  • • 将日期表标记为“日期表”,以获得更好的功能支持。

  • • 对于多日期(如订单日期、发货日期),可以复制日期表或使用 DAX 度量值来处理多日期。

Power BI 设置优化

禁用 Power BI 的自动日期

为了更好地控制模型并减小模型大小,建议禁用 Power BI 的自动日期/时间层次结构,替换为手动创建的自定义日期表及其层次结构。

关闭方法:选项 > 当前文件 > 数据加载 > 时间智能 > 自动日期/时间。

禁用加载数据后自动检测新关系

此功能可能会意外创建关系,从而破坏数据模型的结构,尤其是对于缺乏数据建模经验的用户。

关闭方法:选项 > 当前文件 > 数据加载 > 关系 > 加载数据后自动检测新关系。

总结

通过遵循以上八大最佳实践,你可以确保 Power BI 数据模型性能出色、易于维护且具备良好的扩展性。高效的数据建模不仅能加快报表响应速度,还能降低系统资源消耗,满足不断增长的业务需求。

定期审查与优化你的数据模型,让 Power BI 真正成为数据驱动决策的利器!

对企业数据分析有问题?点击下方预约直播,还可现场连麦咨询哦。 

更专业的数据分析师训练营



🚀【经典课程】系统化学习 Power BI 经典视频课程。

📈【高级课程】业务人(管理、销售、财务、供应链)彻底解决企业数据分析。

🔍【企业咨询】十大行业,十大领域,企业案例,咨询,培训,实施。

🔗 如何获取更多信息?扫描下方二维码具体咨询。

BI佐罗数据分析 - 更专业更系统的企业数据分析

点击“阅读原文”获取更多资源

BI佐罗讲数据分析
多年PowerBI MVP带你学习更专业更系统的企业数据分析。
 最新文章