如果需要比 Power Query 中现身提供的列更灵活地添加新列,则可以使用 Power Query M 公式语言创建自己的自定义列。
假设你有一个表,其中包含以下列集。
使用单位、单价和折扣列,您想创建两个新列:
- 折扣前的总销售额:通过将 “单位 ”列乘以“ 单价 ”列计算。
- 折扣后的销售总额:通过将 “折扣前的总销售额 ”列乘以净百分比值(一个减去折扣值)计算。
目标是创建一个包含折扣前总销售额和折扣后总销售额的新列的表。
创建自定义列
在“添加列”选项卡上,选择“自定义列”。
此时会显示 “自定义列 ”对话框。 这是您定义用于创建列的公式的对话框。
“ 自定义列 ”对话框包含:
“新建列名称”框中自定义列的初始名称。 可重命名此列。
一个下拉菜单,可在其中为新列选择数据类型。
右侧数据类型选择下方有一个可用列列表。
您可以在自定义列公式框中输入Power Query M 公式。
若要添加新的自定义列,请从 “可用列 ”列表中选择一列。 然后,选择列表下方的 “插入列 ”按钮,将其添加到自定义列公式。 还可以通过在列表中选择列来添加列。 或者,可以在 自定义列公式中使用 Power Query M 公式语言编写自己的公式。
注释
如果在创建自定义列时出现语法错误,将显示黄色警告图标以及错误消息和原因。
在“折扣”列之前添加“总销售额”
您可以用来创建“折扣前总销售额”列的公式是[Units] * [Unit Price]
。 在 “数据类型”中,选择 “货币 ”数据类型。
该操作的结果是在表中添加了一个新的折扣前总销售列。
注释
如果您使用 Power Query Desktop,数据类型 字段在 自定义列中不可用。 这意味着在创建列后,需要为任何自定义列定义数据类型。 详细信息: Power Query 中的数据类型
在“折扣”列后添加“总销售额”列
可以用于创建折扣前总销售额的公式是[Total Sale before Discount]* (1-[Discount])
。 将此新列的数据类型设置为 Currency。
该操作的结果是在表中新增一个“折扣后总销售额”列。
修改现有自定义列
Power Query 将自定义列添加到表中,并将“已添加的自定义步骤”添加到查询设置中的“已应用步骤”列表中。
若要修改自定义列,请在“已应用的步骤”列表中选择“已添加的自定义步骤”。
此时将显示“ 自定义列 ”对话框,其中包含创建的自定义列公式。
注释
根据您为自定义列使用的公式,Power Query 会更改您步骤的设置的行为方式,以便提供更简化和自然的体验。 对于此示例,添加的自定义 步骤将其功能从标准自定义列步骤更改为 乘法 操作,因为该步骤中的公式仅对两列的值进行相乘。
使用 Copilot 创建自定义列公式(预览版)
注释
此体验仅适用于应用 Copilot 的 Power Query 体验。
在 “添加自定义列 ”对话框中,可以使用包含 copilot 图标的新输入文本框。 你可以用你自己的字词和语言描述你希望该自定义列如何与列逻辑相关的作用。
例如,假设需要引入复杂的条件逻辑。 可以使用自己的字词来描述此逻辑,Copilot 可以为你创建自定义列公式。
例如,对于字段 OrderID、 Quantity、 Category、 Total 的表,可以传递如下所示的提示:
if the Total order is more than 2000 and the Category is B, then provide a discount of 10%. If the total is more than 200 and the Category is A, then provide a discount of 25% but only if the Quantity is more than 10 otherwise just provide a 10% discount.
提交此提示后,Copilot 会对其进行处理并修改自定义列公式,并在必要时添加名称和数据类型。
可以查看自定义列并进行任何必要的更改。
注释
在具有现有公式的自定义列对话框中发送的任何提示都可能导致现有公式完全替换为 Copilot 的建议。
相关内容
- 可以通过其他方式创建自定义列,例如创建基于您提供给 Power Query 编辑器的示例的列。 详细信息: 从示例添加列
- 有关 Power Query M 参考信息,请转到 Power Query M 函数参考。