毎月のCSVで列名が変わっても止めない ― Power Query Mで列名ゆれを吸収する

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

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft LearnのPower Query M公式仕様と既存Daily-Code-Samplesを確認し、ダミー表で列名ゆれを観察できる形に整理しています。

検証ステータス:📘 公式仕様・既存サンプル確認済み/Excel実機未確認

毎月届くCSVで「社員コード」が「従業員ID」に変わっただけで更新が止まるなら、Power Query側で入力名を標準名へ寄せる層を1つ置くと保守しやすくなります。ただし、列が消えたことを何でも無視すると異常を隠すので、許容するゆれだけを明示するのがポイントです。

まず試す

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を指定できます。

1か所変えてみる

従業員ID社員番号へ変えて再実行してください。今回は許容リストにないため、社員コードnullになります。

ここが重要です。止まらないこと異常を見逃さないことは別問題です。未知の列名まで勝手に推測して標準化しない方が、業務データでは安全です。

なぜこう設計するのか

flowchart LR
  A[毎月CSV] --> B[許容する列名ゆれを標準化]
  B --> C[必要列を固定]
  C --> D{不足列?}
  D -- なし --> E[通常処理]
  D -- あり --> F[null/警告として検知]

Power Queryの途中に「入力契約を正規化する層」を置くと、その後の集計式は毎月の表記ゆれを意識せずに済みます。一方、未知の変更は警告対象として残せます。

仕事で使うなら

人事CSV、アンケート集計、各部署から集めるExcel、外部委託先の月次ファイルなどで使えます。実務では、許容する別名を表として管理し、元列名・標準列名・不足列をログへ残すと、仕様変更なのか単なる表記ゆれなのか判断しやすくなります。

本番投入前には、①列が増えた、②列が消えた、③同義列が2本同時に来た、④型が変わった、の4ケースをダミーデータで確認してください。特に「社員コード」と「従業員ID」が同時に存在する場合、どちらかを黙って採用しない設計が安全です。

GitHubサンプル

公式情報・一次情報

文書情報

記事タイトル
毎月のCSVで列名が変わっても止めない ― Power Query Mで列名ゆれを吸収する
作成日
更新日
Source URL
https://papanda925.com/?p=15479

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました