你可能非常熟悉参数查询在 SQL 或 Microsoft 查询中的用法。 但是,Power Query参数存在主要差异:
-
参数可用于任何查询步骤。 除了充当数据筛选器之外,参数还可用于指定文件路径或服务器名称等内容。
-
参数不提示输入。 相反,可以使用 Power Query 快速更改其值。 甚至可以在 Excel 中存储和检索单元格中的值。
-
参数保存在简单的参数查询中,但与所使用的数据查询不同。 创建后,可以根据需要向查询添加参数。
备注 如果希望使用其他方法创建参数查询,请参阅在 Microsoft Query 中创建参数查询。
可以使用 参数自动更改查询中的值,并避免每次编辑查询以更改值。 只需更改参数值即可。 创建参数后,该参数将保存在特殊参数查询中,可以直接从 Excel 进行更改。
-
选择“数据”>“>”启动Power Query 编辑器“>获取其他源的数据。
-
在Power Query 编辑器中,选择“主页”>“管理参数”>“新建参数”。
-
在“ 管理参数”对话框中,选择“ 新建”。
-
根据需要设置以下内容:
名称
这应反映参数的函数,但请尽可能短。
描述
这可以包含有助于人们正确使用 参数的任何详细信息。
必选
执行下列操作之一:
任意值 可以在参数查询中输入任何数据类型的任何值。 值列表 可以通过在小网格中输入值,将值限制为特定列表。 还必须在下面选择 “默认值” 和“ 当前值 ”。 查询 选择列表查询,该查询类似于 用 逗号分隔并用大括号括起来的列表结构化列。 例如,“问题”状态字段可以有三个值:{“New”、“Ongoing”、“Closed”}。 必须事先创建列表查询,方法是打开高级编辑器 (选择“开始 >高级编辑器) ”,删除代码模板,以查询列表格式输入值列表,然后选择“完成”。 创建完参数后,列表查询将显示在参数值中。类型
这将指定 参数的数据类型。
建议的值
如果需要,请添加值列表或指定查询来提供输入建议。
默认值
仅当“建议值”设置为“值列表”,并指定默认列表项时,才会显示此值。 在这种情况下,必须选择默认值。
当前值
如果此参数为空,则查询可能不返回任何结果,具体取决于使用 参数的位置。 如果选择“ 必需 ”, 则“当前值 ”不能为空。
-
若要创建参数,请选择“确定”。
下面是一种管理数据源位置更改并帮助防止刷新错误的方法。 例如,假设架构和数据源类似,请创建一个参数来轻松更改数据源并帮助防止数据刷新错误。 有时服务器、数据库、文件夹、文件名或位置会更改。 也许数据库管理器偶尔会交换服务器,每月一次的 CSV 文件会进入其他文件夹,或者你需要在开发/测试/生产环境之间轻松切换。
步骤 1:创建参数查询
在以下示例中,使用导入文件夹操作导入多个 CSV 文件, (选择数据 >从文件获取数据 >>从文件夹) 从文件夹 C:\DataFilesCSV1。 但有时,其他文件夹偶尔会用作放置文件的位置,C:\DataFilesCSV2。 可以使用查询中的参数作为不同文件夹的替代值。
-
选择“ 主页 ”> “管理参数 ”> “新建参数”。
-
在“ 管理参数 ”对话框中输入以下信息:
名称
CSVFileDrop
描述
备用文件放置位置
必选
是
类型
文本
建议的值
任何值
当前值
C:\DataFilesCSV1
-
选择“确定”。
步骤 2:将 参数添加到数据查询
-
若要将文件夹名称设置为参数,请在“查询设置”中的“查询步骤”下,选择“源”,然后选择“编辑设置”。
-
确保“ 文件路径 ”选项设置为“参数”,然后从下拉列表中选择刚刚创建的参数。
-
选择“确定”。
步骤 3:更新参数值
文件夹位置刚刚更改,现在只需更新参数查询即可。
-
选择“ 数据 > 连接&查询 > 查询 ”选项卡,右键单击参数查询,然后选择 “编辑”。
-
在“ 当前值 ”框中输入新位置,例如 C:\DataFilesCSV2。
-
选择 “开始 > 关闭&加载”。
-
若要确认结果,请将新数据添加到数据源,然后使用更新的参数刷新数据查询, (选择 数据 > 刷新全部) 。
有时,需要一种简单的方法来更改查询的筛选器以获取不同的结果,而无需编辑查询或创建同一查询的略有不同副本。 在此示例中,我们将更改日期以方便地更改数据筛选器。
-
若要打开查询,请找到以前从Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择“查询 >编辑”。 有关详细信息 ,请参阅在 Excel 中创建、加载或编辑查询。
-
选择任何列标题中的筛选器箭头以筛选数据,然后选择筛选命令,例如 日期/时间筛选器 > 之后。 此时将显示“筛选行 ”对话框。
-
选择“ 值 ”框左侧的按钮,然后执行下列操作之一:
-
若要使用现有参数,请选择“ 参数”,然后从右侧显示的列表中选择所需的参数。
-
若要使用新参数,请选择“ 新建参数”,然后创建参数。
-
-
在“ 当前值 ”框中输入新日期,然后选择“ 开始 > 关闭&加载”。
-
若要确认结果,请将新数据添加到数据源,然后使用更新的参数刷新数据查询, (选择 数据 > 刷新全部) 。 例如,将筛选器值更改为其他日期以查看新结果。
-
在“ 当前值 ”框中输入新日期。
-
选择 “开始 > 关闭&加载”。
-
若要确认结果,请将新数据添加到数据源,然后使用更新的参数刷新数据查询, (选择 数据 > 刷新全部) 。
在此示例中,将从工作簿中的单元格读取查询参数中的值。 无需更改参数查询,只需更新单元格值。 例如,你想要按第一个字母筛选列,但可以轻松地将值更改为从 A 到 Z 的任何字母。
-
在加载要筛选的查询的工作簿中的工作表上,创建包含两个单元格的 Excel 表:标题和值。
MyFilter
G
-
在 Excel 表中选择单元格,然后选择“数据”>“从表/区域 获取数据>”。此时会显示Power Query 编辑器。
-
在右侧“查询设置”窗格的“名称”框中,将查询名称更改为更有意义,例如 FilterCellValue。
-
若要传递表中的值而不是表本身,请在数据预览中右键单击该值,然后选择“ 向下钻取”。
请注意,公式已更改为 = #"Changed Type"{0}[MyFilter]
在步骤 10 中使用 Excel 表格作为筛选器时,Power Query引用 Table 值作为筛选条件。 直接引用 Excel 表会导致错误。
-
选择 “开始 > 关闭&加载 > 关闭&加载到”。 现在,你有一个名为“FilterCellValue”的查询参数,可在步骤 12 中使用。
-
在“ 导入数据 ”对话框中,选择“ 仅创建连接”,然后选择“ 确定”。
-
通过选择数据中的单元格,然后选择“查询>编辑”,打开要筛选的查询,其中一个值以前从Power Query 编辑器加载。 有关详细信息 ,请参阅在 Excel 中创建、加载或编辑查询。
-
选择任何列标题中的筛选器箭头以筛选数据,然后选择筛选命令,例如 文本筛选器 > 开头。 此时将显示“筛选行 ”对话框。
-
在“值 ”框中输入任何值,例如“G”,然后选择“ 确定”。 在这种情况下,该值是 FilterCellValue 表中值的临时占位符,在下一步中输入该值。
-
选择编辑栏右侧的箭头以显示整个公式。 下面是公式中的筛选条件示例:
= Table.SelectRows (#“Changed Type”,每个 Text.StartsWith ([Name], “G”) ) -
选择筛选器的值。 在公式中,选择“G”。
-
使用 M Intellisense 输入创建的 FilterCellValue 表的前几个字母,然后从出现的列表中选择它。
-
选择 “开始 > 关闭 > 关闭&加载”。
结果
查询现在使用您创建的 Excel 表中的值来筛选查询结果。 若要使用新值,请在步骤 1 中编辑原始 Excel 表中的单元格内容,将“G”更改为“V”,然后刷新查询。
可以控制是否允许参数查询。
-
在Power Query 编辑器中,选择“文件 >选项和设置”>查询选项> Power Query 编辑器。
-
在左侧窗格中的“全局”下,选择“Power Query 编辑器”。
-
在右侧窗格中的 “参数”下,选择或清除“ 始终允许在数据源和转换对话框中进行参数化”。