关于本文
本文是通过利用生成式 AI 的自动化流程创建的。我们查阅了 Microsoft Learn 的 Power Query M 官方规范以及现有的 Daily-Code-Samples,并将其整理为可以通过虚拟表观察列名变体的形式。验证状态:📘 已确认官方规范及现有示例/Excel 实机未确认
如果每月送达的 CSV 中仅仅因为将“员工代码”变成了“雇员 ID”就导致更新停止,那么在 Power Query 侧设置一个将输入名称对齐到标准名称的层会更容易维护。但是,如果盲目忽略任何列消失的情况,就会掩盖异常,因此明确指定允许的变体才是关键点。
首先尝试
将以下内容粘贴到 Power Query 的空白查询中。
let
Source = #table(
{"従業員ID", "氏名"},
{{"A001", "パンダ"}, {"A002", "コアラ"}}
),
Renamed = Table.RenameColumns(
Source,
{{"従業員ID", "社員コード"}},
MissingField.Ignore
),
Output = Table.SelectColumns(
Renamed,
{"社員コード", "氏名"},
MissingField.UseNull
)
in
Output
查看这里
输入虽然是従業員ID,但输出会变成社員コード。此外,还可以使用Table.SelectColumns来固定最终列,并将缺失的列设为null。
在 Microsoft Learn 中,Table.RenameColumns通常会对不存在的列报错,但在第 3 个参数中可以指定MissingField.Ignore。另外,在Table.SelectColumns中可以指定MissingField.UseNull。
尝试更改一处
従業員ID将社員番号更改为社員コード并重新执行。由于这次不在允许列表中,null将变成
这一点非常重要。不中断与不漏掉异常是两码事。对于业务数据来说,不擅自猜测并标准化未知的列名会更加安全。
为什么要这样设计
flowchart LR
A[毎月CSV] --> B[許容する列名ゆれを標準化]
B --> C[必要列を固定]
C --> D{不足列?}
D -- なし --> E[通常処理]
D -- あり --> F[null/警告として検知]
如果在 Power Query 的中间放置一个“规范化输入契约的层”,后续的汇总公式就不需要关注每月的表述变体了。同时,未知的更改可以作为警告对象保留下来。
如果在实际工作中使用
它可用于人事 CSV、问卷汇总、各部门收集的 Excel、外部承包商的月度文件等。在实际业务中,将允许的别名作为表来管理,并将原列名、标准列名、缺失列记录到日志中,将更容易判断这究竟是规范变更还是单纯的表述变体。
在投入生产环境之前,请使用虚拟数据确认以下四种情况:① 列增加,② 列消失,③ 同时出现两个同义列,④ 数据类型改变。特别是当“员工代码”和“雇员 ID”同时存在时,采用不默默采纳其中一方的设计才是安全的。

