Claude Media
ClaudeでPower QueryのM式エラーを直す手順 — 原因ステップの切り分け

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は参照先の名前を推測するしかなくなります。

  1. クエリを選び、ホームタブの詳細エディタを開く
  2. 全文をコピーする(let から in の最後の名前まで)
  3. エラーペインの理由・メッセージ・詳細の3行を、別にコピーする
  4. 出ているエラーが、どのステップを選んだ状態のものかをメモする

手順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
    Typed

Renamed のステップで、次のようなエラーが出たとします。

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. 適用したステップの一覧で、エラーが出ていたステップの1つ前を選び、結果が想定どおりか見る
  2. 修正したステップを反映し、そのステップを選んで結果を見る
  3. 後ろのステップを順に選び、エラーが消えたことを確かめる
  4. 戻したいときは、ステップを右クリックして削除する。そのステップ以降をまとめて消す操作(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ステップずつ手元で試すと、外れた案でクエリを壊さずに済みます。接続情報は伏せてから貼ってください。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. learn.microsoft.com/en-us/power-query/dealing-with-errors
  2. learn.microsoft.com/en-us/power-query/error-handling
  3. learn.microsoft.com/en-us/power-query/applied-steps
  4. learn.microsoft.com/en-us/powerquery-m/table-renamecolumns
  5. platform.claude.com/docs/en/build-with-claude/files
  6. platform.claude.com/docs/en/build-with-claude/vision
この記事を共有:XはてブLinkedIn