参数是一种轻松存储和管理可重复使用的值的方法。
借助参数,可以灵活地根据查询的值动态更改查询的输出,并可用于:
- 更改特定转换和数据源函数的参数值。
- 自定义函数中的输入。
可以在“ 管理参数 ”窗口中轻松管理参数。 若要访问“管理参数”窗口,请在“开始”选项卡中选择“管理参数”中的“管理参数”选项。
创建参数
Power Query 提供了两种简单的方法来创建参数:
在现有查询中:右键单击其值为简单非结构化常量(例如日期、文本或数字)的查询,然后选择 “转换为参数”。
也可以右键单击参数并选择“ 转换为查询”,将参数转换为查询。
使用“管理参数”窗口:从“开始”选项卡中“管理参数”下拉菜单中选择“新建参数”选项。或启动“管理参数”窗口,然后选择顶部的“新建”以创建参数。 填写此表单,然后选择“ 确定 ”创建新参数。
创建参数后,始终可以返回到 “管理参数 ”窗口,随时修改任何参数。
参数属性
参数存储可用于 Power Query 中的转换的值。 除了参数的名称及其存储的值之外,它还具有提供元数据的其他属性。 参数的属性包括:
名称:提供此参数的名称,使你能够轻松识别和区分它与可能创建的其他参数。
说明:显示参数信息时,参数名称旁边会显示说明,帮助指定参数值的用户了解其用途及其语义。
必需:复选框指示后续用户是否可以指定是否必须提供参数的值。
类型:指定参数的数据类型。 建议始终设置参数的数据类型。 若要详细了解数据类型的重要性,请转到 数据类型。
建议的值:为用户提供从可用选项中选择 当前值 的值的建议:
任何值:当前值可以是任何手动输入的值。
值列表:提供简单的类似表的体验,以便可以定义建议的值列表,供以后从 当前值中进行选择。 选择此选项后,将提供名为 “默认值 ”的新选项。 在此处,可以选择应为此参数的默认值,这是引用参数时向用户显示的默认值。 此值与 当前值不同,它是存储在参数中的值,并且可以在转换中作为参数传递。 使用 值列表 提供显示在“ 默认值 ”和“ 当前值 ”字段中的下拉菜单,可以从建议的值列表中选择其中一个值。
注释
你仍然可以手动键入要传递给参数的任何值。 建议值列表仅用作简单建议。
查询:使用列表查询(其输出为列表的查询)提供建议值列表,供以后选择 当前值。
当前值:存储在此参数中的值。
使用参数的位置
参数可以采用许多不同的方式使用,但在两种方案中更常用:
- 步骤参数:可以使用参数作为从用户界面(UI)驱动的多个转换的参数。
- 自定义函数参数:可以从查询创建新函数,并引用参数作为自定义函数的参数。
下一节包含这两种方案的示例。
步骤参数
若要启用此功能,请先转到 Power Query 编辑器中的“视图”选项卡,然后选择“参数”组中的“始终允许”选项。
例如,下面的 Orders 表包含 OrderID、 Total Units 和 Margin 字段。
在此示例中,创建一个名称为最小边距,类型为十进制数,且当前值为0.2的新参数。
转到 “订单” 查询,然后在 “边距 ”字段中选择 “大于 ”筛选器选项。
在 “筛选行 ”窗口中,有一个按钮,其中包含所选字段的数据类型。 从此按钮的下拉菜单中选择 “参数 ”选项。 从数据类型按钮旁边的字段选择中,选择要传递给此参数的参数。 在本例中,它是 最小边距 参数。
选择“确定”后,将使用参数的“当前值”筛选表。
如果将 Minimum Margin 参数的当前值修改为 0.3,则订单查询将立即更新,并且仅显示边距高于 30%的行。
小窍门
通过 Power Query 中的许多转换,可以从下拉列表中选择参数。 建议您始终寻找并充分利用参数所能带来的优势。
自定义函数参数
使用 Power Query,可以从具有简单选择的现有查询创建自定义函数。 在前面的示例中,右键单击 “订单” 查询并选择“ 创建函数”。 此作将启动一个新的 “创建函数 ”窗口。 在此窗口中,为新函数命名,并告知查询中引用的参数。 这些参数用作自定义函数的参数。
你可以随意命名这个新函数。 出于演示目的,此新函数的名称为 MyFunction。 选择 “确定”后,将使用新函数的名称在 “查询 ”窗格中创建一个新组。 在此组中,可以找到用于函数的参数、用于创建函数的查询以及函数本身。
若要测试此新函数,请在 “最小边距 ”标签下的字段中输入值(如 0.4)。 然后选择 “调用 ”按钮。 此操作创建名为 被调用函数的新查询,将值 0.4 传递给函数作为参数,并仅筛选出边距高于 40% 的行。
若要详细了解如何创建自定义函数,请转到 创建自定义函数。
多值或列表参数
仅在 Power Query Online 中可用的新类型参数是多值或列表参数。 本部分介绍如何创建新的列表参数以及如何在查询中使用它。
在前面的示例中,将 最小边距 的当前值从 0.3 更改为 0.1。 新目标是创建一个列表参数,该参数可以保存要分析的订单的订单号。 若要创建新参数,请转到“ 管理参数 ”对话框,然后选择“ 新建 ”以创建新参数。 使用以下信息填写此新参数:
- 名字: 有趣的订单
- 描述: 一组对特定分析有趣的订单编号
- 必填: 真
- 类型: 列表
定义这些字段后,将弹出一个新网格,可在其中输入要为参数存储的值。 在这种情况下,这些值为 125、 777 和 999。
注释
虽然此示例使用数字,但还可以将其他数据类型存储在列表中,例如文本、日期、日期/时间等。 详细信息: Power Query 中的数据类型
小窍门
如果要更好地控制列表参数中使用的值,始终可以创建具有常量值的列表。 然后,将列表查询转换为本文前面展示的参数。
有了新的 “有趣的订单 ”列表参数,请返回 “订单” 查询。 选择 OrderID 字段的自动筛选菜单。 选择数字筛选器>In。
小窍门
对于某些其他数据类型, In 筛选器可能不会显示在主筛选器菜单中。 选择任何其他筛选器选项,然后在 “查询设置”下编辑筛选器。 然后,从编辑器中的筛选器下拉菜单中选择 In。
选择此选项后,将显示新的 “筛选行 ”对话框。 在此处,可以从下拉菜单中选择列表参数。
注释
列表参数可以配合 In 或 Not in 选项使用。 通过它 ,只能按列表中的值进行筛选。 Not in 执行完全相反的操作,尝试筛选列中不等于参数中存储值的所有值。
选择 “确定”后,将返回到查询。 在那里,查询使用所创建的列表参数进行筛选,结果中只有 OrderID 等于 125、 777 或 999 的行。