分析 Direct Lake 语义模型的查询处理

Direct Lake 模式下的 Power BI 数据集直接从 OneLake 读取增量表,除非它们必须回退到 DirectQuery 模式。 典型的回退原因包括内存压力,这些压力可能会阻止加载处理 DAX 查询所需的列,并且数据源中的某些功能可能不支持 Direct Lake 模式,例如仓库和湖屋中的 SQL 视图。 通常,除非需要回退到 DirectQuery 模式,否则 Direct Lake 模式提供最佳的 DAX 查询性能。 回退到 DirectQuery 模式可能会影响 DAX 查询性能,因此必须分析 Direct Lake 语义模型的查询处理,以确定是否发生回退以及回退的频率。

使用性能分析器进行分析

通过性能分析器可快速轻松地了解视觉对象查询数据源的方式,以及呈现结果所需的时间。

  1. 启动 Power BI Desktop。 在开始屏幕上,选择“新建”>“报告”

  2. 从功能区中选择“获取数据”,然后选择“Power BI 语义模型”

  3. 在“OneLake 数据中心”页中,选择要连接到的 Direct Lake 语义模型,然后选择“连接”

  4. 在报表画布上放置卡片视觉对象,选择数据列来创建基本报表,然后在“视图”菜单中选择“性能分析器”。

    “性能分析器”窗格的屏幕截图。

  5. 在“性能分析器”窗格中,选择“开始录制”。

    用于在性能分析器中开始录制的命令的屏幕截图。

  6. 在“性能分析器”窗格中,选择“刷新视觉对象”,然后展开“卡片”视觉对象。 卡片视觉对象不会导致任何 DirectQuery 处理,这表明语义模型能够在 Direct Lake 模式下处理视觉对象的 DAX 查询。

    如果语义模型回退到 DirectQuery 模式来处理视觉对象的 DAX 查询,你会看到“直接查询”性能指标,如下图所示:

    直接查询性能指标的屏幕截图。

使用 SQL Server Profiler 进行分析

SQL Server Profiler 可以跟踪查询事件,从而提供有关查询性能的更多详细信息。 它使用SQL Server Management Studio (SSMS)进行安装。 在开始之前,请确保已安装最新版本的 SSMS。

  1. 从 Windows 菜单开始 SQL Server Profiler。

  2. 在 SQL Server Profiler 中,选择“文件>”“新建跟踪”。

  3. 在“连接到服务器>”“服务器类型”中,选择“Analysis Services”,然后在“服务器名称”中,输入工作区的 URL,选择身份验证方法,然后输入用户名以登录到工作区。

    SQL Server Profiler 中“连接到服务器”对话框的屏幕截图。

  4. 选择“选项”。 在“连接到数据库”中,输入语义模型名称,然后选择“连接”。 登录到 Microsoft Entra ID。

    “连接到数据库字段”中指定的数据库名称的屏幕截图。

  5. 在“跟踪属性>”“事件选择”中,选中“显示所有事件”复选框。

    “事件选择 - 显示所有事件复选框”的屏幕截图。

  6. 滚动到“查询处理”,然后选中以下事件的复选框:

    事件 说明
    DirectQuery_Begin
    DirectQuery_End
    如果跟踪中出现 DirectQuery 开始/结束事件,语义模型可能已回退到 DirectQuery 模式。 请注意,存在 EngineEdition 查询以及可能用于检查对象级安全性 (OLS) 的查询并不表示回退,因为引擎始终对这些非查询处理相关的检查使用 DirectQuery 模式。
    VertiPaq_SE_Query_Begin
    VertiPaq_SE_Query_Cache_Match
    VertiPaq_SE_Query_Cache_Miss
    VertiPaq_SE_Query_End
    Direct Lake 模式下的 VertiPaq 存储引擎 (SE) 事件与导入模式中的事件相同。

    它看起来应该如下所示:

    显示 SQL Server Profiler 中的所选的查询处理事件的屏幕截图。

  7. 选择“运行”。 在 Power BI Desktop 中,新建报表或与现有报表交互以生成查询事件。 查看查询处理事件的 SQL Server Profiler 跟踪报告。

    下图显示了 DAX 查询的查询处理事件的示例。 在此跟踪中,VertiPaq 存储引擎 (SE) 事件指示查询在Direct Lake 模式下处理。 SQL Server Profiler 中的查询处理事件的屏幕截图。