创建参数查询 (Power Query)

应用对象
Microsoft 365 专属 Excel Microsoft 365 Mac 版专属 Excel

您可能非常熟悉参数查询在 SQL 或 Microsoft Query 中的用法。 但是,Power Query 参数具有关键差异:

  • 参数可以在任何查询步骤中使用。 除了用作数据过滤器外,参数还可用于指定文件路径或服务器名称等内容。
  • 参数不提示输入。 相反,可以使用 Power Query 快速更改其值。 您甚至可以在 Excel 中存储和检索单元格中的值。
  • 参数保存在简单的参数查询中,但与使用它们的数据查询是分开的。 创建后,您可以根据需要向查询添加参数。

备注 如果需要使用其他方式创建参数查询,请参阅 在 Microsoft Query 中创建参数查询。

创建参数

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

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

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

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

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

    名称 这应反映参数的功能,但请尽可能简短。
    说明 这可以包含有助于人们正确使用参数的任何详细信息。
    必选 执行下列操作之一:

    任何值 可以在参数查询中输入任何数据类型的任何值。

    值列表 您可以通过在小网格中输入值来将值限制为特定列表。 还必须在下面选择默认 当前值

    查询 选择列表查询,该查询类似于 列表结构化 列,用逗号分隔并用大括号括起来。

    例如,问题状态字段可以包含三个值:{“New”, “Ongoing”, “Closed”}。 必须事先创建列表查询,方法是打开高级编辑器 (选择“主页>高级编辑器) ”,删除代码模板,以查询列表格式输入值列表,然后选择“完成”。

    完成参数创建后,列表查询将显示在参数值中。
    Type 指定参数的数据类型。
    建议的值 如果需要,请添加值列表或指定查询以提供输入建议。
    默认值 只有当 “建议的值” 设置为 “值列表”并指定哪个列表项为默认值时,才会显示此操作。 在这种情况下,必须选择默认值。
    当前值 根据该参数的使用位置,如果该参数为空,则查询可能不会返回任何结果。 如果选择 了“必需 ”,则 “当前值” 不能为空。
  5. 若要创建参数,请选择“ 确定”

使用参数更改数据源

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

步骤 1:创建参数查询

在下面的示例中,你有多个 CSV 文件,你使用导入文件夹操作导入 (Select Data>> Get Datafrom Files>From Folder) from folder C:\DataFilesCSV1。 但有时会使用不同的文件夹作为放置文件的位置 C:\DataFilesCSV2。 可使用查询中的参数作为不同文件夹的替代值。

  1. 选择“开始>”管理参数“”>新参数“。

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

    名称 CSVFileDrop
    说明 备用文件放置位置
    必选
    Type 文本
    建议的值 任何值
    当前值 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 引用表值作为筛选条件。 直接引用 Excel 表格会导致错误。

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

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

  7. 打开要使用 FilterCellValue 表中的值(之前从 Power Query 编辑器加载的值)筛选的查询,方法是在数据中选择一个单元格,然后选择“查询>编辑”。 有关详细信息,请参阅 在 Excel 中创建、加载或编辑查询

  8. 选择任何列标题中的筛选箭头以筛选数据,然后选择一个筛选命令,如“ 文本筛选器的>开头为”。 将出现 “筛选行 ”对话框。

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

  10. 选择公式栏右侧的箭头以显示整个公式。 下面是公式中筛选条件的示例:

    = Table.SelectRows (#“Changed Type”, each 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. 在右侧窗格的 “参数”下,选择或清除 “始终允许在数据源和转换对话框中设置参数化”。

另请参阅

Microsoft Power Query for Excel 帮助

使用查询参数 (docs.com)