你可能非常熟悉参数查询在 SQL 或 Microsoft 查询中的用法。 但是,Power Query参数存在主要差异:

  • 参数可用于任何查询步骤。 除了充当数据筛选器之外,参数还可用于指定文件路径或服务器名称等内容。 

  • 参数不提示输入。 相反,可以使用 Power Query 快速更改其值。 甚至可以在 Excel 中存储和检索单元格中的值。

  • 参数保存在简单的参数查询中,但与所使用的数据查询不同。  创建后,可以根据需要向查询添加参数。

备注    如果希望使用其他方法创建参数查询,请参阅在 Microsoft Query 中创建参数查询。

可以使用 参数自动更改查询中的值,并避免每次编辑查询以更改值。 只需更改参数值即可。 创建参数后,该参数将保存在特殊参数查询中,可以直接从 Excel 进行更改。

  1. 选择“数据”>>”启动Power Query 编辑器“>获取其他源的数据。

  2. 在Power Query 编辑器中,选择“主页”>“管理参数”>“新建参数”。

  3. 在“ 管理参数”对话框中,选择“ 新建”。

  4. 根据需要设置以下内容:

    名称    

    这应反映参数的函数,但请尽可能短。

    描述    

    这可以包含有助于人们正确使用 参数的任何详细信息。

    必选    

    执行下列操作之一:任意值 可以在参数查询中输入任何数据类型的任何值。值列表    可以通过在小网格中输入值,将值限制为特定列表。 还必须在下面选择 “默认值” 和“ 当前值 ”。查询 选择列表查询,该查询类似于 逗号分隔并用大括号括起来的列表结构化列。例如,“问题”状态字段可以有三个值:{“New”、“Ongoing”、“Closed”}。 必须事先创建列表查询,方法是打开高级编辑器 (选择“开始 >高级编辑器) ”,删除代码模板,以查询列表格式输入值列表,然后选择“完成”。创建完参数后,列表查询将显示在参数值中。

    类型    

    这将指定 参数的数据类型。

    建议的值    

    如果需要,请添加值列表或指定查询来提供输入建议。

    默认值

    仅当“建议值”设置为“值列表”,并指定默认列表项时,才会显示此值。 在这种情况下,必须选择默认值。

    当前值    

    如果此参数为空,则查询可能不返回任何结果,具体取决于使用 参数的位置。 如果选择“ 必需 ”, 则“当前值 ”不能为空。

  5. 若要创建参数,请选择“确定”。

下面是一种管理数据源位置更改并帮助防止刷新错误的方法。 例如,假设架构和数据源类似,请创建一个参数来轻松更改数据源并帮助防止数据刷新错误。 有时服务器、数据库、文件夹、文件名或位置会更改。 也许数据库管理器偶尔会交换服务器,每月一次的 CSV 文件会进入其他文件夹,或者你需要在开发/测试/生产环境之间轻松切换。

步骤 1:创建参数查询

在以下示例中,使用导入文件夹操作导入多个 CSV 文件, (选择数据 >从文件获取数据 >>从文件夹) 从文件夹 C:\DataFilesCSV1。 但有时,其他文件夹偶尔会用作放置文件的位置,C:\DataFilesCSV2。 可以使用查询中的参数作为不同文件夹的替代值。

  1. 选择“ 主页 ”> “管理参数 ”> “新建参数”。

  2. 在“ 管理参数 ”对话框中输入以下信息:

    名称

    CSVFileDrop

    描述

    备用文件放置位置

    必选

    类型

    文本

    建议的值

    任何值

    当前值

    C:\DataFilesCSV1

  3. 选择“确定”。

步骤 2:将 参数添加到数据查询

  1. 若要将文件夹名称设置为参数,请在“查询设置”中的“查询步骤”下,选择“”,然后选择“编辑设置”。

  2. 确保“ 文件路径 ”选项设置为“参数”,然后从下拉列表中选择刚刚创建的参数。

  3. 选择“确定”。

步骤 3:更新参数值

文件夹位置刚刚更改,现在只需更新参数查询即可。

  1. 选择“ 数据 > 连接&查询 > 查询 ”选项卡,右键单击参数查询,然后选择 “编辑”。

  2. 在“ 当前值 ”框中输入新位置,例如 C:\DataFilesCSV2

  3. 选择 “开始 > 关闭&加载”。

  4. 若要确认结果,请将新数据添加到数据源,然后使用更新的参数刷新数据查询, (选择 数据 > 刷新全部) 。

有时,需要一种简单的方法来更改查询的筛选器以获取不同的结果,而无需编辑查询或创建同一查询的略有不同副本。 在此示例中,我们将更改日期以方便地更改数据筛选器。

  1. 若要打开查询,请找到以前从Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择“查询 >编辑”。 有关详细信息 ,请参阅在 Excel 中创建、加载或编辑查询

  2. 选择任何列标题中的筛选器箭头以筛选数据,然后选择筛选命令,例如 日期/时间筛选器 > 之后。 此时将显示“筛选行 ”对话框。 在“筛选器”对话框中输入参数

  3. 选择“ ”框左侧的按钮,然后执行下列操作之一:

    • 若要使用现有参数,请选择“ 参数”,然后从右侧显示的列表中选择所需的参数。

    • 若要使用新参数,请选择“ 新建参数”,然后创建参数。

  4. 在“ 当前值 ”框中输入新日期,然后选择“ 开始 > 关闭&加载”。

  5. 若要确认结果,请将新数据添加到数据源,然后使用更新的参数刷新数据查询, (选择 数据 > 刷新全部) 。 例如,将筛选器值更改为其他日期以查看新结果。

  6. 在“ 当前值 ”框中输入新日期。

  7. 选择 “开始 > 关闭&加载”。

  8. 若要确认结果,请将新数据添加到数据源,然后使用更新的参数刷新数据查询, (选择 数据 > 刷新全部) 。

在此示例中,将从工作簿中的单元格读取查询参数中的值。 无需更改参数查询,只需更新单元格值。 例如,你想要按第一个字母筛选列,但可以轻松地将值更改为从 A 到 Z 的任何字母。

  1. 在加载要筛选的查询的工作簿中的工作表上,创建包含两个单元格的 Excel 表:标题和值。  

    MyFilter

    G

  2. 在 Excel 表中选择单元格,然后选择“数据”>“从表/区域 获取数据>”。此时会显示Power Query 编辑器。

  3. 在右侧“查询设置”窗格的“名称”框中,将查询名称更改为更有意义,例如 FilterCellValue。 

  4. 若要传递表中的值而不是表本身,请在数据预览中右键单击该值,然后选择“ 向下钻取”。

    请注意,公式已更改为 = #"Changed Type"{0}[MyFilter]

    在步骤 10 中使用 Excel 表格作为筛选器时,Power Query引用 Table 值作为筛选条件。 直接引用 Excel 表会导致错误。

  5. 选择 “开始 > 关闭&加载 > 关闭&加载到”。 现在,你有一个名为“FilterCellValue”的查询参数,可在步骤 12 中使用。

  6. 在“ 导入数据 ”对话框中,选择“ 仅创建连接”,然后选择“ 确定”。

  7. 通过选择数据中的单元格,然后选择“查询>编辑”,打开要筛选的查询,其中一个值以前从Power Query 编辑器加载。 有关详细信息 ,请参阅在 Excel 中创建、加载或编辑查询

  8. 选择任何列标题中的筛选器箭头以筛选数据,然后选择筛选命令,例如 文本筛选器 > 开头。 此时将显示“筛选行 ”对话框。 

  9. 在“”框中输入任何值,例如“G”,然后选择“ 确定”。 在这种情况下,该值是 FilterCellValue 表中值的临时占位符,在下一步中输入该值。

  10. 选择编辑栏右侧的箭头以显示整个公式。 下面是公式中的筛选条件示例: = Table.SelectRows (#“Changed Type”,每个 Text.StartsWith ([Name], “G”) )

  11. 选择筛选器的值。 在公式中,选择“G”。

  12. 使用 M Intellisense 输入创建的 FilterCellValue 表的前几个字母,然后从出现的列表中选择它。

  13. 选择 “开始 > 关闭 > 关闭&加载”。

结果

查询现在使用您创建的 Excel 表中的值来筛选查询结果。 若要使用新值,请在步骤 1 中编辑原始 Excel 表中的单元格内容,将“G”更改为“V”,然后刷新查询。

可以控制是否允许参数查询。

  1. 在Power Query 编辑器中,选择“文件 >选项和设置”>查询选项> Power Query 编辑器

  2. 在左侧窗格中的“全局”下,选择“Power Query 编辑器”。

  3. 在右侧窗格中的 “参数”下,选择或清除“ 始终允许在数据源和转换对话框中进行参数化”。

另请参阅

excel 帮助Power Query

使用查询参数 (docs.com)

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。