使用“优化”功能区的 DirectQuery 优化方案

在本文中,我们将介绍几个 DirectQuery 报表创作方案,展示如何使用 Power BI Desktop 中的“优化”功能区简化体验。 使用“优化”功能区时,可以使用“暂停视觉对象”和“刷新视觉对象”功能控制视觉对象何时刷新,使用“优化预设”快速应用预定义设置,并轻松启动“性能分析器”以更深入地了解查询本身,包括 DirectQuery 生成的 SQL 查询。 我们还介绍如何直接在“模型”视图的“属性”窗格中编辑关系,而无需运行查询来预览或验证数据。

在了解这些方案之前,请务必先查看 Power BI Desktop 中的“优化”功能区,其中详细介绍了这些令人兴奋的功能。

在不运行查询的情况下更改 DirectQuery 报表

首先,让我们来了解一下如何通过暂停视觉对象,使它们在我们做出更改时不向数据源发送查询,从而提高报表创作性能。 在“优化”功能区中,选择“暂停视觉对象”。 在暂停的情况下,仅当视觉对象不需要发送查询时才会更新。 如果视觉对象确实需要发送查询,则视觉对象会进入待处理状态。 在待处理状态下,视觉对象仍显示引入更改之前的外观(仅针对上下文),并且工具提示也被禁用,因此它们也不会发送任何查询。 现在,我们可以在字段中添加或删除多个列或度量值,对字段重新排序,甚至可以使用“筛选器”窗格筛选视觉对象,并且不会发送任何查询!

完成所有这些更改后,我们在视觉对象上选择“刷新”以仅发送查询一次,选择横幅或功能区上的“刷新”,使页面上的所有视觉对象仅发送一次查询,或者选择横幅上的“恢复视觉对象查询”或“优化”功能区中的“已暂停的视觉对象”,让所有视觉对象发送查询以立即更新并继续发送包含任何其他更改的查询。

让我们仔细看看“已暂停的视觉对象”工作流:

提示:有时页面上的图像很难看到细节。 请务必使用浏览器的缩放功能!

Pause visuals flow diagram

在下面的动画中,我们演示了向页面上的两个视觉对象工具提示添加两个度量值,即“票价”和“每次行程的平均票价”,在字段中重新排列它们,然后从横幅中恢复视觉对象。

Make changes to an existing directquery report without running queries until you are ready animation

如果不使用“暂停视觉对象”,则每次在“字段”井中添加或移动度量值时,都会向 DirectQuery 数据源发送一个新的视觉对象查询。 针对每个视觉对象发送三个查询,因此在本例中,将发送六个查询。 通过使用“暂停视觉对象”,每次添加或移动度量值时,不会发送任何查询。 恢复报表时,仅发送两个查询。 对于这种简单的报表更改,不运行四个额外的查询可节省时间,并且不会浪费宝贵的数据源资源。

在不运行查询的情况下创建新视觉对象

在“优化”功能区中,选择“暂停视觉对象”。 然后,我们从“可视化效果”窗格添加新的“矩阵”视觉对象,然后将“行程”、“星期几”和“一天中的时间”添加到新的“矩阵”视觉对象。 暂停时,“矩阵”视觉对象进入“待处理”状态 - 不发送任何查询。 现在,我们对字段重新排序,但同样,不会发送任何查询。 让我们打开“筛选器”窗格,引入“年份”,然后筛选到 2013 年。 此时,在做出任何更多更改之前,查看视觉对象会很有帮助。 我们可以在待处理的视觉对象横幅中选择“刷新”,或打开“选择”窗格以刷新该视觉对象。 我们只发送了一个查询,并且查询已预先筛选,从而加快了返回时间并减少对数据源的影响。 我们可以对视觉对象进行格式设置更改,即使在报表暂停状态下,这些更改也会显示,因为不需要 DAX 查询。 但是,添加背景色格式设置更改需要查询,以使视觉对象进入待处理状态。 准备就绪后,我们可以刷新或恢复视觉对象查询以查看最终的“矩阵”视觉对象。

创建新视觉对象时使用“暂停视觉对象”

Create new visuals

如果不使用“暂停视觉对象”,则每次在“字段”井中添加或移动度量值或列时,都会向 DirectQuery 数据源发送一个新的视觉对象查询。 在我们开始设置格式之前,这是六个查询,其中五个是在我们将视觉对象筛选为一年之前。 现在,如果使用“暂停视觉对象”,每次添加或移动度量值或列时,不会发送任何查询。 在刷新视觉对象或恢复报表时,仅发送两个查询,并且它们是经过筛选的查询。 对于这种新的视觉对象添加,避免额外的查询不仅可以节省时间,不浪费宝贵的数据源资源,而且我们运行了一个较小的定向查询,并在尽量减少中断的情况下设置了视觉对象格式。

在不刷新视觉对象的情况下创建度量值

与前面的方案一样,在“优化”功能区中选择“暂停视觉对象”,使报表进入暂停状态。 通常,在 DirectQuery 报表中,每当创建新度量值时,报表页上的所有视觉对象都将刷新。 但是,当报表处于暂停状态时,我们可以创建新度量值,而无需发送查询。 视觉对象处于待处理状态。 我们可以将度量值添加到待处理的视觉对象。 然后,我们可以刷新单个视觉对象以使用新度量值查看结果,或者在完成后恢复视觉对象查询。

创建新度量值时使用“暂停视觉对象”

Create measures in a DirectQuery model without the visuals refreshing until you're ready animation

如果不使用“暂停视觉对象”,每次创建度量值时,所有视觉对象都会向 DirectQuery 数据源发送查询。 模型每更改一次,页面上的五个视觉对象会发送五个查询。 仅创建两个新度量值并将这些度量值添加到单个视觉对象时,会发送大量查询! 使用“暂停视觉对象”时,每次创建度量值或将度量值添加到视觉对象时,不会发送任何查询。 刷新单个视觉对象,然后恢复报表时,仅发送六个查询。 对于这些建模更改,我们发现查询数量和等待查询返回数据的时间大幅度减少。 我们还显著减少了数据源上的工作负荷。

编辑 DirectQuery 表之间的关系

若要在 Power BI Desktop 的“模型”视图中编辑两个 DirectQuery 表之间的关系,现在只需选择这些表之间的关系行,即可在“属性”窗格中对其进行编辑! 我们可以更改表、列、基数、方向,将其设置为活动状态或非活动状态,甚至可以在确信每个表未缺少另一个表中的值时启用引用完整性。 完成后,选择“应用更改”。 还可以按住 Ctrl 选择多个关系,以在“属性”窗格中进行批量更改,或使用 Delete 键将其删除。

在“属性”窗格中编辑关系

Relationship editing in properties pane animation

如果无法在“属性”窗格中编辑关系,则每次更改关系时,都会在打开对话框以显示数据预览时发送查询。 每次更改表或列时,都会发送查询来验证关系的基数和方向。 现在,通过优化,在“属性”窗格中编辑关系时,我们不会发送任何查询,并且仅在准备就绪并且我们已选择“应用更改”按钮时验证关系。

应用查询缩减设置

如果在“优化”功能区中选择“优化预设”下拉列表,然后为报表选择“查询缩减”,将显示一个对话框,描述所应用的设置。

Optimized for query reduction screen image

交叉突出显示和交叉筛选是选择数据点时视觉对象相互交互的方式。 默认值为 Power BI Desktop 为交叉突出显示。 可以通过转到“文件”>“选项和设置”>“选项”>“报表设置”,然后选择“将默认视觉对象交互从交叉突出显示更改为交叉筛选”,将默认值更改为交叉筛选。

Cross filtering report settings

优化预设仅关闭默认的交叉突出显示和交叉筛选,因此在视觉对象级别使用“编辑”交互完成的任何自定义都不会受影响。 如果我们选择任何视觉对象 (1) 以显示“格式”功能区,然后选择“编辑交互”(2),则会显示报表中其他视觉对象的选项 (3)。 然后,我们可以决定在视觉对象中选择数据点时,它们将如何更改。 在本例中,从交叉筛选或交叉突出显示更改为根本不交互。 让我们看一下工作流:

Edit interactions screen image

如果我们自定义了任何编辑交互,则默认情况下禁用交叉突出显示和交叉筛选的优化预设不会更改此自定义项。 视觉对象之间的任何自定义编辑交互仍然像以前一样工作。

然后,我们将“应用”按钮添加到切片器。 报表中的每个切片器现在都有一个“应用”按钮,用户可以在每个切片器中选择或取消选择多个选项,在选择“应用”按钮之前,报表中没有其他视觉对象发送查询。 切片器仍然彼此独立,因此,如果我们有两个具有“应用”按钮的切片器,则必须选择每个“应用”按钮才能应用切片器选择。

Apply buttons on slicers

“应用”按钮会添加到“筛选器”窗格。 “筛选器”窗格按钮向窗格中的所有筛选器选择添加了控件,但只有一个“应用”按钮。 若要了解详细信息,请参阅设置 Power BI 报表中的筛选器格式 - 应用筛选器按钮

更改查询缩减设置

在“优化”功能区中,选择“优化预设”,然后选择“自定义”以更改任何设置。 在我们的报表中,切片器用于单选,“应用”按钮在多个选择中更有用,因此我们可以保留其他设置,并返回切片器以通过“自定义”立即应用。

还原为立即应用切片器

Optimization presets customize animation

在数据源更改后还原为完全交互

在“优化”功能区中,选择“优化预设”,然后选择报表的“交互性”。 这些是 Power BI Desktop 中的默认设置,因此,如果我们选择了“查询缩减”或“自定义”来更改优化预设,则这就是返回到默认值的方式。 对话框会确认我们的设置。

设置交互性优化预设。

Optimization presets interactivity animation

在本例中,我们将专门介绍 DirectQuery 报告方案,但它们可用于其他报告方案。

对于特定视觉对象,我们可以通过使用性能分析器来了解是否存在直接查询行,从而确定它是否正在使用 DirectQuery。 可以看到,DirectQuery 用于为视觉对象返回数据:

DirectQuery reporting scenario-in performance analyzer screen image

社区

在这些方案中,你已了解如何使用“属性”窗格中的“优化”功能区和关系编辑来简化 Power BI Desktop 中的创作体验。 请务必用自己的 DirectQuery 报表来试一试。

想要了解详细信息,或者想要共享自己的方案? Power BI 有一个充满活力的社区,在此社区中,MVP、BI 专业人员和同行在讨论组、视频、博客中分享专业知识。 请务必查看 Power BI 社区

你也可以参与! 在 Microsoft Learn 中,类似本文的 Power BI 文档是开源的。 若要详细了解如何参与,请务必查看 Microsoft Learn 文档参与者指南