即使每月 CSV 的列名发生变化也不会中断 ― 使用 Power Query M 吸收列名变体

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

关于本文
本文是通过利用生成式 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”同时存在时,采用不默默采纳其中一方的设计才是安全的。

GitHub 示例

官方信息与第一手资料

文档信息

文章??
即使每月 CSV 的列名发生变化也不会中断 ― 使用 Power Query M 吸收列名变体
?布日期
更新日期
来源
https://papanda925.com/?p=17069&lang=zh

?可: ?于本站?有相??利的正文及原??表,除非?有?明,可依据 CC BY 4.0 使用。本文可能包含使用生成式AI?建或??的内容。若代??有?可声明,或?接的GitHub???定了?可,?代?以??可?准。引用内容、第三方?料、?片及商?不在本?可范?内。 使用政策

标题和URL已复制