使用参数

参数可以方便地存储和管理可重复使用的值。

借助参数,可以灵活地根据查询的值动态更改查询的输出,并可用于以下用途:

  • 更改特定转换和数据源函数的参数值。
  • 自定义函数中的输入。

可以在“管理参数”窗口中轻松管理参数。 若要访问“管理参数”窗口,请在“主页”选项卡中选择“管理参数”中的“管理参数”选项。

“管理参数”窗口。

创建参数

Power Query 提供了两种简单的方法来创建参数:

  • 在现有查询中:右键单击其值为简单非结构化常量(例如日期、文本或数字)的查询,然后选择“转换为参数”。

    转换为参数。

    也可以右键单击参数并选择“转换为查询”,将参数转换为查询。

    转换为查询。

  • 使用“管理参数”窗口:从“主页”选项卡的“管理参数”下拉菜单中选择“新建参数”选项,或启动“管理参数”窗口,然后选择顶部的“新建”以创建参数。 填写此表单,然后选择“确定”创建新参数。

    从“管理参数”窗口创建参数。

创建参数后,始终可以返回到“管理参数”窗口,随时修改任何参数。

参数属性

参数存储的值可用于 Power Query 中的转换。 除了参数的名称及其存储的值之外,还具有提供元数据的其他属性。 参数的属性包括:

  • 名称:提供此参数的名称,以便于识别此参数并区别于其他可能创建的参数。

  • 说明:显示参数信息时,参数名称旁边会显示说明,帮助指定参数值的用户了解其用途及语义。

  • 必需:复选框指示后续用户是否可以指定是否必须提供参数值。

  • 类型:指定参数的数据类型。 建议始终设置参数的数据类型。 若要详细了解数据类型的重要性,请转到数据类型

  • 建议值:向用户提供从可用选项中为”当前值“选择值的建议:

    • 任何值:当前值可以是任何手动输入的值。

    • 值列表:提供类似于表的简单体验,以便可以定义建议值列表,供以后从”当前值“中进行选择。 选择此选项后,将出现名为“默认值”的新选项。 此时,可以选择该参数的默认值,也就是在引用该参数时显示给用户的默认值。 该值当前值不同,后者是存储在参数内部的值,可以在转换中作为参数传递。 使用值列表提供显示在“默认值”和“当前值”字段中的下拉菜单,可以从建议的值列表中选择其中一个值。

      具有建议值列表的参数。

      注意

      你仍然可以手动键入要传递给参数的任何值。 建议值列表只是简单的建议。

    • 查询:使用列表查询(其输出为列表的查询)提供建议值列表,供以后为当前值选择这些值。

      具有列表查询的参数。

  • 当前值:存储在此参数中的值。

何处使用参数

参数的使用方式多种多样,但有两种情况比较常见:

  • Step 参数:可以使用参数作为从用户界面 (UI) 驱动的多个转换的参数。
  • 自定义函数参数:可以通过查询创建新函数,并引用参数作为自定义函数的参数。

在接下来的章节中,将介绍这两种情况的示例。

Step 参数

若要启用此功能,请先转到 Power Query 编辑器中的“视图”选项卡,然后选择“参数”组中的“始终允许”选项。

始终允许参数。

例如,以下订单表包含”OrderID“、”单位“和”利润率“字段。

显示利润率的订单示例表。

在此示例中,创建一个新参数,名称为最小利润率,类型为小数当前值为 0.2。

示例参数。

转到“订单”查询,然后在“利润率”字段中选择“大于”筛选器选项。

“Margin”字段的“大于”筛选器选项。

在“筛选行”窗口中,有一个包含所选字段数据类型的按钮。 从此按钮的下拉菜单中选择“参数”选项。 从数据类型按钮旁边的字段选择中,选择要传递给此参数的参数。 在本例中是”最小利润率“参数。

选择转换参数的参数。

选择“确定”后,将使用参数的“当前值”筛选表。

用作转换参数的示例参数。

如果将”最小利润率“参数的”当前值“修改为 0.3,则订单查询将立即更新,并且仅显示利润率高于 30% 的行。

更新后的参数当前值。

提示

Power Query 中的许多转换都允许从下拉菜单中选择参数。 建议经常查找并利用参数所能提供的优势。

自定义函数参数

使用 Power Query,可以通过简单的单击从现有查询创建自定义函数。 在前面的示例中,右键单击“订单”查询并选择“创建函数”。 此操作将启动新的“创建函数”窗口。 在此窗口中,为新函数命名,它会告诉你查询中引用的参数。 这些参数用作自定义函数的参数。

创建函数.

可以随心所欲地为此新函数命名。 出于演示目的,此新函数的名称为 MyFunction。 选择“确定”后,将使用新函数的名称在“查询”窗格中创建一个新组。 在此组中,你将找到找到用于函数的参数、用于创建函数的查询以及函数本身。

函数已创建。

若要测试此新函数,请在“最小利润率”标签下的字段中输入值(如 0.4)。 然后,选择”调用“按钮。 这将创建一个名为”调用函数“的新查询,从而有效地传递值 0.4 用作函数参数,并仅提供利润率高于 40% 的行。

调用值为 0.4 的函数。

若要详细了解如何创建自定义函数,请转到创建自定义函数

多值或列表参数

多值参数或列表参数是一种仅在 Power Query Online 中可用的新型参数。 本部分将介绍如何创建新的列表参数,以及如何在查询中使用该参数。

在前面的示例中,将最小利润率的当前值从 0.3 更改为 0.1。 新目标是创建一个列表参数,该参数可以保存要分析的订单的订单号。 若要创建新参数,请转到“管理参数”对话框,然后选择“新建”创建新参数。 使用以下信息填写此新参数:

  • 名称:有趣的订单
  • 说明:对特定分析有意义的一组订单号
  • 必需: True
  • 类型:列表

定义这些字段后,将弹出一个新网格,可在其中输入要为参数存储的值。 本例中这些值为 125777999

新的“Interesting Orders”列表参数,值网格中的值为“125”、“777”和“999”。

注意

虽然此示例使用数字,但还可以将其他数据类型存储在列表中,例如文本、日期、日期时间等。 详情请见:Power Query 中的数据类型

提示

如果要更好地控制列表参数中使用的值,始终可以创建包含常量值的列表,并将列表查询转换为本文前面展示的参数。

新的“有趣的订单”列表参数准备好后,请返回“订单”查询。 选择 OrderID 字段的自动筛选菜单。 选择数字筛选器>”“。

“OrderID”列的“数字筛选”子菜单内的“位于”选项

选择此选项后,将显示新的“筛选行”对话框。 在此处,可以从下拉菜单中选择列表参数。

显示了 in 运算符的“筛选行”对话框,可在其中使用新的“Interesting Orders”列表参数。

注意

列表参数可以使用”“或”不在“选项。 ”“只允许按列表中的值进行筛选。 ”不在“恰恰相反,尝试筛选列以获取与参数中存储的值不相等的所有值。

选择“确定”后,将返回到查询。 在这里,查询已使用已创建的列表参数进行筛选,结果只保留了OrderID 等于 125777999 的记录。

使用“Interesting Orders”列表参数和 10% 的最小利润率筛选后所显示的最终表。