本文总结了 Power BI 服务中的分页报表与 SQL Server Reporting Services/Power BI 报表服务器之间的可伸缩性和性能差异。 本文适用于将分页报表从本地迁移到 Power BI 服务的用户。 此外,它还提供有关如何在服务中优化分页报表性能的见解。
可伸缩性注意事项
比较 Power BI 服务中分页报表与本地报表的可伸缩性时,有两个主要注意事项:执行环境是否经过优化以处理正在使用的表达式和数据量。 以下是在改进服务中分页报表的可伸缩性方面至关重要的一些因素。
执行环境
分页报表可以在两个不同的执行环境中运行:标准环境和优化环境。 这些环境之间的主要区别是,与标准执行环境相比,优化环境可以处理更高的数据量。 报表中使用的表达式决定了执行环境,用户无法通过任何设置或配置对其进行修改。 确保报表在优化环境中运行的唯一方法是删除任何非支持表达式,因为优化环境仅支持报表表达式的特定子集。
如果报表包含非支持表达式,请考虑删除或更新这些表达式,以确保报表在优化环境中运行。 一种方法是将计算移动到数据集查询中。 此外,在语义模型数据源中使用计算字段的另一个优点是其他报表也可以使用它们。 Power Query 是在分页报表之外执行高级计算和数据处理操作的另一个选项。 可在此处找到详细信息。
注释
不支持表达式的一个示例是 RDL 中计算字段的用法,如下所示: If(Weekday(Fields!SalesDate.Value) > 5, "Relax", "Work")
工作日是尚未优化的函数。 与其使用报表表达式,不如将其计算为 SQL 查询的一部分。 对于 SQL Server/Azure SQL, 可以使用 Transact SQL 函数 DATEPART
和 IF..ELSE
。
若要检查报表是否在优化环境中运行,请单击分页报表中的“诊断”按钮,并检查“执行环境”部分。 如果报表在优化环境中运行,则“Optimized”显示“是”。 如果报表在标准非优化环境中运行,则“执行环境”部分会显示非支持报表表达式的列表。 有关诊断卡上显示的性能指标的更多详细信息,可 在此处找到。
大量数据
分页报表的标准和优化执行环境都具有特定的数据量限制,如果超出,则显著降低报表处理速度。 在导出报表方案中性能降低时,用户会看到下图中显示的警告:
此问题通常发生在两种方案中:
没有分组和许多列/行的表的数据转储:在将分页报表导出到 Excel 时,这些数据转储需要大量资源。 或者,可以考虑将报表导出为 CSV 格式,这样处理起来负担较轻。
在报表处理时聚合大数据量:在分页报表数据集使用的查询中执行这些聚合,而不是在分页报表中聚合大数据量。 此方法可减少分页报表处理的数据量,并且通常会增强整体性能,因为 SQL Server 或 Power BI 语义模型等数据源针对数据聚合进行高度优化。
在报表处理速度缓慢之前,标准执行环境中数据量的建议阈值为 1,000,000 行,其中包含 15-20 列,包括数字、日期和中小长度字符串数据类型的混合体。 对于优化的执行环境,此限制加倍。 向数据转储添加图像数据 (byte[]
) 会显著增加数据量。 同样,选择多于或少于指定的列数也会影响数据量,数据类型的组合也会影响数据量。
性能注意事项
即使对于中小型数据量,这些情境下的服务中可能会有更多因素影响分页报表的性能。
- 每次在 Power BI 服务中打开报表时处理报表 参数 。
- 每当用户单击“查看报表”按钮时呈现报表。
- 从各种数据源检索数据
改进报表参数处理的最佳做法
报表参数可由具有可用值和默认值的数据集提供支持,这通常是多个参数的情况。 参数还可以依赖于其他参数,例如级联参数。 因此,按顺序执行参数查询。 当报表具有级联参数时,每次选择后续值时,都会运行每个参数化查询。
鉴于参数值通常是静态的,并且不会频繁更改,SQL Server Reporting Services('SSRS')利用这一优势为数据集缓存提供可靠的支持( 如下 所述),这改进了 SSRS 中的报表参数处理。 但是,服务中的分页报表不支持数据集缓存。 因此,用户应遵循以下最佳做法来改进服务中分页报表的参数查询的执行时间:
- 避免使用针对通过 Power BI 网关访问的本地数据源运行的参数查询。 而是使用 Power BI 语义模型作为缓存。
- 减少参数查询提取的数据量,以确保效率。 提取超过 1,000 个值可能非常耗时,在 UI 中可能不太友好。
- 将 EnterData 数据扩展插件 用于静态参数值集,以便将它们嵌入 RDL 中。 除了提供参数值外,还可以在报表中使用这些数据集,而无需运行查询。
改进分页报表呈现的最佳做法
与可伸缩性部分中提供的准则类似,请避免对通过 Power BI 网关访问的本地数据源使用实时查询。 若要改进分页报表中的报表呈现,请改用 Power BI 语义模型作为缓存。 不要聚合分页报表中的数据,而是在数据集查询中执行聚合以减少数据量并提高性能。 使用 Azure SQL 或 Power BI 语义模型等数据源,这些模型经过高度优化以处理聚合。
此外,避免使用数据集或表/矩阵筛选器,因为分页报表首先提取所有数据,然后在内部应用筛选器,从而影响性能。 请尽可能在数据集查询中使用筛选器。
高效数据检索的最佳做法
多地理位置环境(报表和数据源(如语义模型)位于不同区域,可降低数据检索速度。 有关对分页报表进行高效数据检索的更多指南,可 在此处找到。
相关内容
有关本文的详细信息,请查看以下资源: