Power Query でのエラーの処理
[アーティクル] 2024/03/29
5 人の共同作成者
フィードバック
この記事の内容
ステップ レベルのエラー
セル レベルのエラー
Power Query では、2 種類のエラーが発生する可能性があります。
この記事では、各レベルで発生する可能性のある最も一般的なエラーの解決方法に関する推奨事項を示し、それぞれのエラーの理由、メッセージ、詳細について説明します。
ステップ レベルのエラーがあると、クエリが読み込まれず、エラーのあるコンポーネントが黄色のペインに表示されます。
エラーの理由 : コロンの前の最初のセクション。 上の例では、エラーの理由は Expression.Error です。
エラー メッセージ : 理由の直後にあるセクション。 上の例では、エラー メッセージは "テーブルの列 'Column' が見つかりませんでした " です。
エラーの詳細 : [詳細:] という文字列の直後のセクション。 上の例では、エラーの詳細は [列] です。
どのような場合でも、エラーの理由、エラー メッセージ、エラーの詳細をよく見て、エラーの原因を把握することをお勧めします。 [エラーへ移動] ボタンが表示されている場合、それを選ぶと、エラーが発生した最初のステップが表示されます。
ソースが見つからない - DataSource.Error
このエラーは、一般に、ユーザーがデータ ソースにアクセスできない場合、データ ソースにアクセスするための正しい資格情報をユーザーが持っていない場合、またはソースが別の場所に移動された場合に発生します。
例 : ユーザー A によって作成された、ドライブ D にあるテキスト タイルのクエリがあります。ユーザー A はユーザー B とクエリを共有していますが、ユーザー B はドライブ D にアクセスできません。このユーザーがクエリを実行しようとすると、環境にドライブ D がないため、DataSource.Error が発生します。
考えられる解決方法 : テキスト ファイルのパスを、両方のユーザーがアクセスできるパスに変更できます。 ユーザー B は、ファイル パスを同じテキスト ファイルのローカル コピーに変更できます。 [設定の編集] ボタンがエラー ペインに表示されている場合は、それを選んで、ファイルのパスを変更できます。
このエラーは、通常、クエリに存在しない列名をステップで直接参照した場合に発生します。
例 : 列名の 1 つが Column であるテキスト ファイルのクエリがあります。 クエリには、その列の名前を Date に変更するステップがあります。 しかし、元のテキスト ファイルでその列の名前が手動で Date に変更されたため、Column という名前の列見出しはなくなっています。 Power Query は Column という名前の列見出しを見つけることができないため、列の名前を変更できません。 次の画像のようなエラーが表示されます。
考えられる解決方法 : このケースには複数の解決策がありますが、すべてはユーザーの意向次第です。 この例では、正しい Date 列ヘッダーが既にテキスト ファイルから取得されているため、列の名前を変更するステップを削除するだけで済みます。 これにより、このエラーが発生することなくクエリを実行できるようになります。
複数のデータ ソース間でデータを結合またはマージするときに、次の画像に示すような Formula.Firewall エラーが発生することがあります。
このエラーは、データ ソース間のデータ プライバシー レベルや、これらのデータ ソースの結合またはマージ方法など、さまざまな理由によって発生する可能性があります。 この問題を診断する方法について詳しくは、データ プライバシー ファイアウォール に関するページをご覧ください。
セル レベルのエラーによってクエリの読み込みが妨げられることはありませんが、エラー値がセルに [エラー] と表示されます。 セルの空白部分を選ぶと、データ プレビューの下にエラー ペインが表示されます。
注意
データ プロファイル ツールを使用すると、列の品質機能でセル レベルのエラーをより簡単に識別できます。 詳細情報: データ プロファイル ツール
セル レベルのエラーが発生したときは、エラーを削除、置換、または保持することによってそれらを処理する一連の機能が Power Query によって提供されています。
次のセクションの例では、開始点として同じサンプル クエリを使用します。 このクエリでは、1 つのセルで変換エラーが発生する Sales 列があります。 そのセルの値は NA ですが、その列を整数に変換すると、Power Query では NA を数値に変換できないため、次のエラーが表示されます。
Power Query でエラーのある行を削除するには、まず、エラーが含まれる列を選びます。 [ホーム] タブで、[行の削減] グループの [行の削除] を選びます。 ドロップダウン メニューから、[エラーの削除] を選びます。
この操作の結果、求めているテーブルが得られます。
エラーのある行を削除するのではなく、エラーを固定値に置き換えたい場合は、それを行うこともできます。 エラーのある行を置き換えるには、最初に、エラーが含まれる列を選びます。 [変換] タブの [任意の列] グループで、[値の置換] を選びます。 ドロップダウン メニューから、[エラーの置換] を選びます。
すべてのエラーを値 10 に置き換えたいので、[エラーの置換] ダイアログ ボックスで値「10 」を入力します。
この操作の結果、求めているテーブルが得られます。
Power Query は、エラーを修正しなくても、エラーのある行を識別するための適切な監査ツールとして機能します。 この場合、[エラーの保持] が役に立ちます。 エラーのある行を保持するには、最初に、エラーが含まれる列を選びます。 [ホーム] タブで、[行の削減] グループの [行の保持] を選びます。 ドロップダウン メニューから、[エラーの保持] を選びます。
この操作の結果、求めているテーブルが得られます。
ステップ レベルのエラーと同様に、セル レベルで提供されるエラーの理由、メッセージ、詳細をよく見て、エラーの原因を把握することをお勧めします。 以下のセクションでは、Power Query で最もよく発生するセル レベルのエラーについて説明します。
一般に、テーブルの列のデータ型を変更するときに発生します。 列の一部の値を目的のデータ型に変換できませんでした。
例 : Sales という名前の列を含むクエリがあります。 その列の 1 つのセルの値は NA ですが、残りのセルの値は整数です。 列のデータ型をテキストから整数に変換することにしましたが、値が NA のセルではエラーが発生します。
考えられる解決方法 : エラーのある行を特定した後、NA ではなく正しい値を反映するようにデータ ソースを変更するか、エラーの置換 操作を適用してエラーの原因になった NA 値の値を指定することができます。
テキスト値を数値で乗算するなど、サポートされていない操作を適用しようとすると、エラーが発生します。
例 : "Total sales:" という語句と 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
データ型を設定します。
関連するデータ ソースのプライバシー レベルを、バッファリングせずに結合できるレベルに変更します。
マージを実行する前にテーブルをフラット化し、ネストされた構造値 (テーブル、レコード、リストなど) を含む列を削除します。