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

Direct Lake 模式下的 Power BI 语义模型直接从 OneLake 读取 Delta 表,除非它们必须回退到 DirectQuery 模式。 典型的回退原因包括内存压力,这些压力可以阻止加载处理 DAX 查询所需的列,并且数据源中的某些功能可能不支持 Direct Lake 模式,例如 Warehouse 和 Lakehouse 中的 SQL 视图。 通常,Direct Lake 模式提供最佳的 DAX 查询性能,除非需要回退到 DirectQuery 模式。 由于回退到 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 Begin/End 事件出现在跟踪中,则语义模型可能已回退到 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 中查询处理事件的屏幕截图。