Power Query でのエラーの処理

Power Query では、2 種類のエラーが発生する可能性があります。

  • ステップ レベルのエラー
  • セル レベルのエラー

この記事では、各レベルで発生する可能性のある最も一般的なエラーの解決方法に関する推奨事項を示し、それぞれのエラーの理由、メッセージ、詳細について説明します。

ステップ レベルのエラー

ステップ レベルのエラーがあると、クエリが読み込まれず、エラーのあるコンポーネントが黄色のペインに表示されます。

ステップ レベルのエラー。

  • エラーの理由: コロンの前の最初のセクション。 上の例では、エラーの理由は Expression.Error です。
  • エラー メッセージ: 理由の直後にあるセクション。 上の例では、エラー メッセージは "テーブルの列 'Column' が見つかりませんでした" です。
  • エラーの詳細: [詳細:] という文字列の直後のセクション。 上の例では、エラーの詳細は [列] です。

一般的なステップ レベルのエラー

どのような場合でも、エラーの理由、エラー メッセージ、エラーの詳細をよく見て、エラーの原因を把握することをお勧めします。 [エラーへ移動] ボタンが表示されている場合、それを選ぶと、エラーが発生した最初のステップが表示されます。

[エラーへ移動] ボタン。

ソースが見つからない - DataSource.Error

このエラーは、一般に、ユーザーがデータ ソースにアクセスできない場合、データ ソースにアクセスするための正しい資格情報をユーザーが持っていない場合、またはソースが別の場所に移動された場合に発生します。

: ユーザー A によって作成された、ドライブ D にあるテキスト タイルのクエリがあります。ユーザー A はユーザー B とクエリを共有していますが、ユーザー B はドライブ D にアクセスできません。このユーザーがクエリを実行しようとすると、環境にドライブ D がないため、DataSource.Error が発生します。

データ ソース エラー。現在の環境にドライブ D がないため、ファイルが見つかりませんでした。

考えられる解決方法: テキスト ファイルのパスを、両方のユーザーがアクセスできるパスに変更できます。 ユーザー B は、ファイル パスを同じテキスト ファイルのローカル コピーに変更できます。 [設定の編集] ボタンがエラー ペインに表示されている場合は、それを選んで、ファイルのパスを変更できます。

テーブルの列が見つからなかった

このエラーは、通常、クエリに存在しない列名をステップで直接参照した場合に発生します。

: 列名の 1 つが Column であるテキスト ファイルのクエリがあります。 クエリには、その列の名前を Date に変更するステップがあります。 しかし、元のテキスト ファイルでその列の名前が手動で Date に変更されたため、Column という名前の列見出しはなくなっています。 Power Query は Column という名前の列見出しを見つけることができないため、列の名前を変更できません。 次の画像のようなエラーが表示されます。

式エラー。列名が手動で変更されたため、テーブルの列が見つかりませんでした。

考えられる解決方法: このケースには複数の解決策がありますが、すべてはユーザーの意向次第です。 この例では、正しい Date 列ヘッダーが既にテキスト ファイルから取得されているため、列の名前を変更するステップを削除するだけで済みます。 これにより、このエラーが発生することなくクエリを実行できるようになります。

その他のステップ レベルのエラー

複数のデータ ソース間でデータを結合またはマージするときに、次の画像に示すような Formula.Firewall エラーが発生することがあります。

式ファイアウォール エラー。クエリは他のクエリまたはステップを参照しているため、データ ソースに直接アクセスできない可能性があります。

このエラーは、データ ソース間のデータ プライバシー レベルや、これらのデータ ソースの結合またはマージ方法など、さまざまな理由によって発生する可能性があります。 この問題を診断する方法について詳しくは、データ プライバシー ファイアウォールに関するページをご覧ください。

セル レベルのエラー

セル レベルのエラーによってクエリの読み込みが妨げられることはありませんが、エラー値がセルに [エラー] と表示されます。 セルの空白部分を選ぶと、データ プレビューの下にエラー ペインが表示されます。

エラーが含まれるテーブル セル内の空白部分を選ぶと表示されるエラー メッセージ。

Note

データ プロファイル ツールを使用すると、列の品質機能でセル レベルのエラーをより簡単に識別できます。 詳細情報: データ プロファイル ツール

セル レベルのエラーの処理

セル レベルのエラーが発生したときは、エラーを削除、置換、または保持することによってそれらを処理する一連の機能が Power Query によって提供されています。

次のセクションの例では、開始点として同じサンプル クエリを使用します。 このクエリでは、1 つのセルで変換エラーが発生する Sales 列があります。 そのセルの値は NA ですが、その列を整数に変換すると、Power Query では NA を数値に変換できないため、次のエラーが表示されます。

データ形式エラーでデータ型を変換できなかったことを示すエラーがエラー ペインに表示されます。

エラーを削除する

Power Query でエラーのある行を削除するには、まず、エラーが含まれる列を選びます。 [ホーム] タブで、[行の削減] グループの [行の削除] を選びます。 ドロップダウン メニューから、[エラーの削除] を選びます。

[ホーム] タブの [エラーの削除] ボタン。

この操作の結果、求めているテーブルが得られます。

テーブルには以前は 5 つの行が含まれていましたが、エラーのある行を削除したので、テーブルには 4 つの行が残っています。

エラーを置換する

エラーのある行を削除するのではなく、エラーを固定値に置き換えたい場合は、それを行うこともできます。 エラーのある行を置き換えるには、最初に、エラーが含まれる列を選びます。 [変換] タブの [任意の列] グループで、[値の置換] を選びます。 ドロップダウン メニューから、[エラーの置換] を選びます。

[変換] タブの [エラーの置換] ボタン。

すべてのエラーを値 10 に置き換えたいので、[エラーの置換] ダイアログ ボックスで値「10」を入力します。

[エラーの置換] ダイアログ ボックス。

この操作の結果、求めているテーブルが得られます。

3 番目の行の Sales 列にあったエラーが値 10 に置き換えられているテーブル。

エラーを保持する

Power Query は、エラーを修正しなくても、エラーのある行を識別するための適切な監査ツールとして機能します。 この場合、[エラーの保持] が役に立ちます。 エラーのある行を保持するには、最初に、エラーが含まれる列を選びます。 [ホーム] タブで、[行の削減] グループの [行の保持] を選びます。 ドロップダウン メニューから、[エラーの保持] を選びます。

[ホーム] タブの [エラーの保持] ボタン。

この操作の結果、求めているテーブルが得られます。

エラーのある行のみが保持されている最終的なテーブル。

セル レベルの一般的なエラー

ステップ レベルのエラーと同様に、セル レベルで提供されるエラーの理由、メッセージ、詳細をよく見て、エラーの原因を把握することをお勧めします。 以下のセクションでは、Power Query で最もよく発生するセル レベルのエラーについて説明します。

データ型変換エラー

一般に、テーブルの列のデータ型を変更するときに発生します。 列の一部の値を目的のデータ型に変換できませんでした。

: Sales という名前の列を含むクエリがあります。 その列の 1 つのセルの値は NA ですが、残りのセルの値は整数です。 列のデータ型をテキストから整数に変換することにしましたが、値が NA のセルではエラーが発生します。

データ型を変換できなかったエラーの詳細。

考えられる解決方法: エラーのある行を特定した後、NA ではなく正しい値を反映するようにデータ ソースを変更するか、エラーの置換操作を適用してエラーの原因になった NA 値の値を指定することができます。

操作エラー

テキスト値を数値で乗算するなど、サポートされていない操作を適用しようとすると、エラーが発生します。

: "Total sales:" という語句と Sales 列の値を連結したものが含まれるテキスト文字列を作成することによって、クエリ用のカスタム列を作成します。 連結操作ではテキスト列のみがサポートされ、数値はサポートされないため、エラーが発生します。

テキストと Sales 列の数値に And 演算子を適用しようとしたことで発生した、[エラー] ペインの式エラー。

考えられる解決方法: このカスタム列を作成する前に、Sales 列のデータ型をテキストに変更します。

数値データ型からテキスト データ型に変換された Sales 列と、その結果である両方の式を含む新しい列が含まれるテーブル。

ネストされた値がエラーとして表示される

ネストされた構造化値 (テーブル、リスト、レコードなど) を含むデータを操作する場合、次のエラーが発生することがあります。

数式ファイアウォールによってトリガーされた入れ子になった値のエラーが発生しました。

Expression.Error: We cannot return a value of type {value} in this context

Details: In the past we would have returned a text value of {value}, but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information.

これらのエラーは通常、次の 2 つの理由で発生します。

  • Data Privacy Firewall がデータ ソースをバッファリングする場合、ネストされた非スカラー値は自動的にエラーに変換されます。
  • Anyデータ型で定義された列に非スカラー値が含まれている場合、そのような値は読み込み中にエラーとして報告されます (Excel のブックや Power BI Desktop のデータ モデルなど)。

考えられる解決策:

  • エラーを含む列を削除するか、そのような列に非 Any データ型を設定します。
  • 関連するデータ ソースのプライバシー レベルを、バッファリングせずに結合できるレベルに変更します。
  • マージを実行する前にテーブルをフラット化し、ネストされた構造値 (テーブル、レコード、リストなど) を含む列を削除します。