分析 Direct Lake 语义模型的查询处理
Direct Lake 模式下的 Power BI 语义模型直接从 OneLake 读取 Delta 表,除非它们必须回退到 DirectQuery 模式。 典型的回退原因包括内存压力,这些压力可以阻止加载处理 DAX 查询所需的列,并且数据源中的某些功能可能不支持 Direct Lake 模式,例如 Warehouse 和 Lakehouse 中的 SQL 视图。 通常,Direct Lake 模式提供最佳的 DAX 查询性能,除非需要回退到 DirectQuery 模式。 由于回退到 DirectQuery 模式可能会影响 DAX 查询性能,因此必须分析 Direct Lake 语义模型的查询处理,以确定是否出现回退以及回退的频率。
使用性能分析器进行分析
性能分析器可以快速轻松地了解视觉对象如何查询数据源,以及呈现结果所需的时间。
启动 Power BI Desktop。 在启动屏幕上,选择“新建”>“报表”。
从功能区中选择“获取数据”,然后选择“Power BI 语义模型”。
在 OneLake 数据中心 页中,选择要连接到的 Direct Lake 语义模型,然后选择 连接。
在报表画布上放置卡片视觉对象,选择数据列来创建基本报表,然后在“视图”菜单中选择“性能分析器”。
在 性能分析器 窗格中,选择 开始录制。
在“性能分析器”窗格中,选择“刷新视觉对象”,然后展开“卡片”视觉对象。 卡片视觉对象不会导致任何 DirectQuery 处理,这表示语义模型能够在 Direct Lake 模式下处理视觉对象的 DAX 查询。
如果语义模型返回到 DirectQuery 模式处理视觉对象的 DAX 查询,则会出现一个直接查询性能指标,如下图所示:
使用 SQL Server Profiler 进行分析
SQL Server Profiler 可以通过跟踪查询事件提供有关查询性能的更多详细信息。 它随 SQL Server Management Studio (SSMS)一起安装。 在开始之前,请确保已安装最新版本的 SSMS。
从 Windows 菜单中启动 SQL Server Profiler。
在 SQL Server Profiler 中,选择“文件”>“新建跟踪”。
在 连接到服务器>服务器类型,选择 Analysis Services,然后在 服务器名称中输入工作区的 URL,然后选择身份验证方法,然后输入用户名登录到工作区。
选择“选项”。 在 连接到数据库中,输入语义模型的名称,然后选择“连接”。 登录到 Microsoft Entra ID。
在 跟踪属性>事件选择中,选中 显示所有事件 复选框。
滚动到“查询处理”,然后选中以下事件对应的复选框:
事件 描述 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_EndDirect Lake 模式下的 VertiPaq 存储引擎 (SE) 事件与导入模式相同。 它应如下所示:
选择 运行。 在 Power BI Desktop 中,创建新报表或与现有报表交互以生成查询事件。 查看 SQL Server Profiler 跟踪报告,了解查询处理事件。
下图显示了 DAX 查询的查询处理事件的示例。 在此跟踪中,VertiPaq 存储引擎 (SE) 事件指示查询是在 Direct Lake 模式下处理的。