本页提供清晰和有意见的指导,用于高效管理 Power BI 和 Azure Databricks 中的数据,以优化查询性能并创建高效的仪表板。
连接 Azure Databricks 和 Power BI
| 最佳做法 | 影响 | Docs | 
|---|---|---|
| 连接到不同的 Azure Databricks 环境时使用 Power BI 参数 | 允许在连接到不同的 Azure Databricks 工作区或不同的 Azure Databricks SQL 仓库时灵活。 | |
| 使用 Azure Databricks 发布到 Power BI 服务功能 | 启用无缝目录集成和数据模型同步,而无需离开 Azure Databricks UI。 | |
| 使用 Azure Databricks 自动发布到 Power BI | 直接从数据管道将数据集从 Unity 目录发布到 Power BI。 | 
选择最合适的存储模式
| 最佳做法 | 影响 | Docs | 
|---|---|---|
| 将 DirectQuery 用于事实数据表,对维度表使用双查询(不导入) | 使用最合适的存储模式生成更高效的 SQL 查询。 | |
| 尽可能优先使用 DirectQuery 而不是导入 | 允许你保持治理和听觉性。 | |
| 将复合模型用于混合存储模式 | 允许混合使用 DirectQuery、双重模式表、导入模式表,以及聚合表和混合表。 | |
| 将混合表用于聚合历史数据与实时数据的结合 | 启用高效的内存中查询。 | 
优化数据访问
| 最佳做法 | 影响 | Docs | 
|---|---|---|
| 使用用户定义的聚合 | 通过缓存预先聚合的数据,提高对大型 DirectQuery 语义模型的查询性能。 | |
| 使用自动聚合 | 通过基于查询历史记录生成聚合来持续优化 DirectQuery 语义模型,以获得最大的报表性能。 | |
| 使用表分区或增量刷新 | 允许更快地导入数据并管理较大的数据集,尤其是对于非常小、静态和性能敏感的(小于 2 秒)报表。 | |
| 添加 “应用所有切片器” 和 “清除所有切片器” 按钮 | 当用户与报表筛选器交互时,利用查询减少设置来防止不必要的查询。 | |
| 如果在上游引入中验证了引用完整性,请在定义表关系时使用假定引用完整性 | 在 SQL 查询中启用更高效的联接策略。 | 
微调数据模型
| 最佳做法 | 影响 | Docs | 
|---|---|---|
| “向左移动”转换 | 与 PowerQuery 转换和 DAX 公式相比,SQL 视图利用 Databricks SQL 引擎的强大功能实现更高效的报表执行。 | |
| 如果必须使用 DAX 公式,请优化 DAX 公式并避免大型结果集。 | 防止导致性能恶化的低效计算 | |
| 避免在语义模型中使用 DAX 计算列和计算表,并在 Gold 表中直接定义此数据 | 预计算度量值在黄金层中表现最佳 | |
| 对于 DirectQuery,请检查查询并行化配置设置 | 改进查询并行化并最大限度地利用 SQL 仓库以提高整体性能。 | |
| 在 DirectQuery 的情况下,请检查 Power BI 能够并行发送到 Azure Databricks 的查询数量。 | 确保 Databricks SQL 仓库相应地调整大小,以处理所需的并行度,以避免查询排队,从而导致报告速度缓慢。 | 
监视性能和指标
| 最佳做法 | 影响 | Docs | 
|---|---|---|
| 使用 Power BI 性能分析器检查报表元素性能 | 标识加载最耗时且瓶颈所在位置的可视化效果。 | |
| 评估 Power BI 语义模型的以下属性: 
 | 微调模型的性能。 |