本机查询上的查询折叠
在 Power Query 中,可以定义本机查询,并针对数据源运行它。 使用本机数据库查询从数据库导入数据文章中介绍了如何使用多个数据源执行此过程。 但是,通过使用本文中所述的过程,查询将无法利用后续查询步骤中的任何查询折叠。
本文演示了一种替代方法,即使用 Value.NativeQuery 函数针对数据源创建本机查询,并在查询的后续步骤中保持查询折叠机制的活动状态。
支持的数据连接器
后文介绍的方法适用于以下数据连接器:
从数据源连接到目标
注意
为了展示此过程,本文使用 SQL Server 连接器和 AdventureWorks2019 示例数据库。 不同的连接器可能会有不同的体验,但本文展示了如何在受支持的连接器的本机查询上启用查询折叠功能的基本原理。
连接到数据源时,请务必连接到要在其中执行本机查询的节点或级别。 在本文示例中,该节点是服务器中的数据库级别。
定义连接设置并提供连接的凭据后,你将将进入数据源的导航对话框。 在该对话框中,将看到可以连接到的所有可用对象。
在此列表中,需要选择运行本机查询的对象(也称为目标)。 在本示例,该对象是数据库级别。
在 Power Query 的导航器窗口中,右键单击导航器窗口中的数据库节点,然后选择“转换数据”选项。 选择此选项会创建数据库整体视图的新查询,这就是运行本机查询的目标。
查询进入 Power Query 编辑器后,“已应用的步骤”窗格中应仅显示“源”步骤。 此步骤包含一个表,其中包含数据库中所有可用对象,类似于导航窗口中的显示方式。
使用 Value.NativeQuery 函数
此过程的目标是执行以下 SQL 代码,并使用可折叠回源的 Power Query 应用更多转换。
SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'
第一步是定义正确的目标,在本例中即为运行 SQL 代码的数据库。
步骤具有正确的目标后,就可以选择该步骤(在本例中为“已应用的步骤中的源”),然后选择编辑栏中的 fx 按钮添加自定义步骤。 在此示例中,将 Source
公式替换为以下公式:
Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development' ", null, [EnableFolding = true])
此公式最重要的组成部分是在函数的第四个参数中使用可选记录,该函数的 EnableFolding 记录字段设置为 true。
注意
可以从官方文档文章中详细了解 Value.NativeQuery 函数。
输入公式后,将显示一条警告,要求为特定步骤启用本地查询。 可以单击“继续”评估此步骤。
此 SQL 语句会生成仅包含三行和两列的表。
测试查询折叠
若要测试查询的查询折叠,可以尝试将筛选器应用于任何列,并查看已应用步骤部分中的查询折叠指示器是否显示该步骤已折叠。 在这种情况下,可以筛选 DepartmentID 列,使其值不等于 2。
添加此筛选器后,可以检查查询折叠指示器是否仍显示在此新步骤中发生了查询折叠。
若要进一步验证要发送到数据源的查询,可以右键单击“筛选的行”步骤,然后选择读取“查看查询计划”选项,检查该步骤的查询计划。
在查询计划视图中,可以看到界面左侧名称为 Value.NativeQuery 的节点,该节点具有读取“查看详细信息”的超链接文本。 可以单击此超链接文本查看要发送到 SQL Server 数据库的确切查询。
本机查询包裹在另一个 SELECT 语句中,可创建原始查询的子查询。 Power Query 会根据所使用的转换和所提供的本地查询,尽力创建最佳查询。
提示
如果因为无法折叠查询而出现错误,建议尝试将步骤作为原始本地查询的子查询进行验证,以检查是否存在任何语法或上下文冲突。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈