この記事について
この記事は、生成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」が同時に存在する場合、どちらかを黙って採用しない設計が安全です。
