ClaudeでPower QueryのM式エラーを直す手順 — 原因ステップの切り分け
Power Queryのステップエラーは、黄色いエラーペインの3行と詳細エディタのM式をテキストで渡すと、原因のステップをClaudeに絞らせやすくなります。渡し方、検証の順、渡してはいけない情報をまとめました。
Power QueryのM式でエラーが出たら、Claudeには「詳細エディタのM式全文」と「エラーペインの3行」をテキストで渡します。スクリーンショットは補助に回します。M式は上のステップの結果を次のステップが受け取る構造なので、エラーが出たステップと、原因のあるステップがずれることがあります。両方の文字列がそろっていれば、Claudeはステップ名をたどって原因を絞り込めます。
この記事は、手元のクエリで実際にエラーが出たときの手順です。渡すものの選び方、プロンプトの型、返ってきた修正案を安全に試す順番、渡してはいけない情報の順に進みます。
先に確認する: エラーはステップ単位かセル単位か
Power Queryのエラーは、ステップ単位とセル単位の2種類に分かれます。どちらかで、Claudeに渡す材料が変わります。
| 種類 | 画面での見え方 | 渡す材料 |
|---|---|---|
| ステップ単位 | 画面での見え方クエリが読み込めず、黄色いペインにエラーが出る | 渡す材料M式全文と、ペインの3行 |
| セル単位 | 画面での見え方読み込みは進み、セルに Error と表示される | 渡す材料M式全文と、エラーのセルを選んだときの詳細ペイン |
ステップ単位のエラーでは、ペインの内容が3つに分かれます。コロンの前が理由(Expression.Error など)、直後がメッセージ、Details: の後ろが詳細です。たとえば「列が見つからない」エラーでは、詳細に列名が入ります。Power Query Onlineでは、メッセージにエラー理由とエラーコードも表示されます(Microsoftの例ではExpression.Errorと10224)。
セル単位のエラーは、セルの空白部分を選ぶとデータプレビューの下に詳細ペインが開きます。スクリーンショットでセルの Error だけを見せても、原因は伝わりません。詳細ペインの文字列を写してください。
手順1: 詳細エディタのM式を丸ごと取り出す
M式はクエリごとに1つです。ステップ名、前のステップの結果を参照する名前、let ... in の最後に返すステップまで、すべて原因の手がかりになります。一部だけ切り出すと、Claudeは参照先の名前を推測するしかなくなります。
- クエリを選び、ホームタブの詳細エディタを開く
- 全文をコピーする(
letからinの最後の名前まで) - エラーペインの理由・メッセージ・詳細の3行を、別にコピーする
- 出ているエラーが、どのステップを選んだ状態のものかをメモする
手順4は意外に効きます。適用したステップの一覧で、ステップを選ぶとそのステップ時点の結果が表示されます。どのステップを選んだときにエラーが出るかを伝えると、Claudeの絞り込みが速くなります。適用したステップの一覧が見えないときは、デスクトップ版ではビュータブからクエリ設定を開きます。
手順2: プロンプトの型に当てはめて渡す
次のように、材料を区切って貼ります。区切りを入れておくと、M式とエラー文字列を取り違えられません。
次のPower QueryのM式でステップエラーが出ています。
原因のステップを特定し、修正したM式を出してください。
【エラー(黄色いペインの内容)】
(理由、メッセージ、詳細を貼る)
【エラーが出るステップ】
(例: 適用したステップで「型の変更」を選ぶと出る)
【M式の全文】
(詳細エディタの内容を貼る)
【条件】
- 元データの列名は変えられない
- 修正はステップ単位で示し、変えた行を明記する
- 原因が複数考えられるときは、確かめ方も添える「変えた行を明記する」の一行が肝です。修正後のM式を丸ごと返されても、どこが変わったのか読み取れません。差分が示されれば、手元で1ステップずつ反映できます。
例: 列が見つからないエラーを絞り込む
次のM式は、説明用に作った例です(公式の記述に沿った構成で、実際のCSVとは関係ありません)。
let
Source = Csv.Document(File.Contents("C:\data\sales.csv")),
Promoted = Table.PromoteHeaders(Source),
Renamed = Table.RenameColumns(Promoted, {{"売上日", "Date"}}),
Typed = Table.TransformColumnTypes(Renamed, {{"Date", type date}})
in
TypedRenamed のステップで、次のようなエラーが出たとします。
Expression.Error: The column '売上日' of the table wasn't found.
Details: 売上日この種のエラーは、ステップが直接参照している列名が、クエリに存在しないときに起きます。Microsoftの説明にある例では、元ファイルの見出しが手作業で変わり、リネームの対象列が消えたケースです。そのときの対処は、リネームのステップを削除することでした。
ここで原因を持っているのは、エラーが出た Renamed ではなく、1つ前の Promoted の結果です。見出しが想定と違う、つまり元データ側の変更です。Claudeに渡すときは「Promoted を選んだときの列名一覧」も添えると、次のような答えを引き出せます。
- 見出しが
売上日から日付に変わっていれば、データ側の変更。リネームの対象を直す - 見出しが同じでも、全角・半角の空白が混ざっていれば、列名の比較が合わない
- 見出しの行ではなく1行目のデータが見出しになっていれば、
Promotedの前提が崩れている
列がなくても通すなら、Table.RenameColumns の第3引数に MissingField.Ignore を渡す方法があります。列が存在しないときの既定はエラーで、MissingField.UseNull や MissingField.Ignore で挙動を変えられます。ただし、エラーを黙らせるだけの修正です。後ろのステップが、その列を前提にしていないかを確かめてから採用してください。
エラー理由ごとに、M式のほかに足す材料
M式とエラーの3行だけで足りないエラーがあります。理由の欄を見て、足す材料を決めてください。
| エラー理由・種類 | 起きる場面 | M式のほかに足す材料 |
|---|---|---|
DataSource.NotFound | 起きる場面共有されたクエリを、別のドライブ構成の人が実行した | M式のほかに足す材料実行する人の環境で、参照先のパスが存在するか(パスは伏せ字で) |
Expression.Error(列が見つからない) | 起きる場面ステップが参照する列名が、クエリに存在しない | M式のほかに足す材料エラー直前のステップを選んだときの列名一覧 |
Formula.Firewall | 起きる場面複数のデータソースを結合・統合した | M式のほかに足す材料各データソースのプライバシーレベル |
| データ型の変換エラー(セル) | 起きる場面数値に変えた列に、NA のような文字列がある | M式のほかに足す材料エラーになったセルの値と、その行の前後 |
| 演算のエラー(セル) | 起きる場面文字列と数値を連結するなど、未対応の演算 | M式のほかに足す材料連結した列の型 |
Formula.Firewall は、M式の文字を直しても解決しないことがあります。原因がプライバシーレベルの設定にあるためです。DataSource.NotFound は、M式の文字がどれだけ正しくても、実行する人の環境にパスがなければ起きます。この場合にClaudeへ聞くべきなのは、書き換えではなく、共有先でも届くパスにするという運用の相談です。
手順3: 返ってきた修正案を手元で検証する
Claudeの修正案は、そのまま詳細エディタに全文を貼り替える前に、1ステップずつ試します。
- 適用したステップの一覧で、エラーが出ていたステップの1つ前を選び、結果が想定どおりか見る
- 修正したステップを反映し、そのステップを選んで結果を見る
- 後ろのステップを順に選び、エラーが消えたことを確かめる
- 戻したいときは、ステップを右クリックして削除する。そのステップ以降をまとめて消す操作(Delete until end)もある
ステップを途中に足すときは、「手順の後に挿入」を使います。Claudeが「ステップを1つ挟む」という案を出したときは、この機能で再現できます。
セル単位のエラーはtryで原因を取り出す
セルにだけ Error が出ている場合は、try 式でエラーを値として取り出せます。try は、結果を「値」か「エラーの記録」のどちらかに変換し、記録には理由・メッセージ・詳細の3項目が入ります。Claudeには次の形で依頼すると、原因の列を確かめるカスタム列を作らせられます。
Added = Table.AddColumn(Typed, "AllErrors", each try [Date])上の例のM式で Date 列を調べる場合の書き方です。列名は自分のクエリに合わせて変えてください。
この列を展開して Error.Message を見れば、セルごとのエラー文が一覧になります。もっと単純に「エラーなら別の値」でよい場合は try [Date] otherwise null と書けます。catch を使うと catch (r) => r[Message] のように、エラーの内容で処理を分けられます。
データ型の変換エラーは、この方法の出番が多い場面です。公式の例では、数値の列に NA という文字列が1つ混ざり、整数への変換で失敗します。対処は、元データを直すか、エラーの置換を使うかのどちらかです。置換でごまかす前に、何件が置き換わったのかを数えておいてください。
件数を数えたいときは、エラーのある列を選び、ホームタブの「行の保持」から「エラーの保持」(Keep errors)を使うと、エラーの行だけを残して中身を確かめられます。Claudeに渡す前に、エラーの行だけを取り出して値を見せる用途にも向きます。エラーのある行を除くなら、「行の削除」の「エラーの削除」(Remove errors)があります。どちらも画面の操作で済むので、M式を書き換える前に試せます。
渡す前に確認すること
M式の中には、思った以上に環境の情報が入っています。ファイルパス、サーバー名、データベース名、場合によっては Web.Contents に直書きしたキーです。
落とし穴
M式に接続情報が直書きされている
Source ステップのパスやサーバー名、ヘッダーのキーは、貼る前に伏せ字へ置き換えます。置き換えるのは接続先の文字列だけで、ステップの構造と列名は残します。エラーの原因がパスの違いの場合は、DataSource.NotFound のようなエラー理由を残せば、Claudeは構造の問題として扱えます。
もう1点、スクリーンショットの扱いです。画像は、Claudeがうまく読めない場合があります。低品質・回転・200ピクセル未満の画像では、読み違いが起きる可能性があるという注意書きがあります。M式の文字は画像から読ませず、テキストで渡してください。画像に向くのは、適用したステップの一覧と、どのステップが赤く出ているかの確認です。claude.aiでは、1回のメッセージに添付できる画像は20枚までです。
APIで繰り返し診断させるとき
エラーを毎回同じ形で診断したい場合は、API経由でM式のテキストをメッセージに入れて送れば足ります。Files APIは、PDFとプレーンテキストを document ブロックで、画像を image ブロックで参照できる仕組みです。.docx や .xlsx は document ブロックの対象外で、テキストに変換して本文に入れるよう案内されています。Excelブックのまま渡すのではなく、M式を抜き出したテキストで渡すのは、この点でも理にかなっています。
画像を file_id で参照するときの形は、次のとおりです。
{
"type": "image",
"source": {
"type": "file",
"file_id": "file_011CPMxVD3fHLUhvTqtsQA5w"
}
}アップロードしたファイルは、ワークスペース全体から参照できます。エンドユーザーや会話単位の分離はありません。社内の他の担当者がアクセスできる状態になるため、接続情報を含むM式やスクリーンショットは、専用のワークスペースを分けるか、expires_in_seconds で期限を付けてください。期限は1時間(3,600秒)から90日(7,776,000秒)の範囲で、アップロード時にしか設定できません。
診断した後に: 列の想定をClaudeと確認する
M式のエラーが片付いた後は、ステップの前提になっている列名と型を一覧にしておくと、次に元データが変わったときに原因を探しやすくなります。Excelの項目定義とデータベースのDDLを突き合わせる手順は、Excelの項目定義書とDDLを突合する手順にまとめています。CSVを材料にClaudeで調べる流れは、Microsoft 365の監査ログCSVの調査記事が参考になります。
まとめ
M式の全文、エラーの3行、エラーが出るステップの3点がそろえば、Claudeは原因のステップを絞れます。返ってきた提案は全文を貼り替えず、1ステップずつ手元で試すと、外れた案でクエリを壊さずに済みます。接続情報は伏せてから貼ってください。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。
- learn.microsoft.com/en-us/power-query/dealing-with-errors
- learn.microsoft.com/en-us/power-query/error-handling
- learn.microsoft.com/en-us/power-query/applied-steps
- learn.microsoft.com/en-us/powerquery-m/table-renamecolumns
- platform.claude.com/docs/en/build-with-claude/files
- platform.claude.com/docs/en/build-with-claude/vision