次の方法で共有


Power BI サービスでテキストとして返される入れ子になった値のトラブルシューティング

以前は、レポートが Power BI Desktop では更新されるのに、Power BI サービスでは次のテキストのようなエラーで失敗することがありました。

We cannot convert the value "[Table]" to type Table

原因

このエラーの原因の 1 つは、テーブル、レコード、リスト、関数などの、入れ子になった非スカラー値です。 データ プライバシー ファイアウォールによってデータ ソースがバッファーリングされると、入れ子になった非スカラー値は "[Table]""[Record]" などのテキスト値に変換されます。

Power BI サービスでは、プライバシー レベルの設定、またはファイアウォールを完全にオフにすることがサポートされるようになりました。 Power BI サービスでデータ ソースのプライバシー設定を構成し、"非プライベート" にすることで、このエラーを回避できます。

より新しいバージョンの Power BI では、ファイアウォールによって入れ子になったテーブル、レコード、またはリストがバッファーリングされても、非スカラー値がテキストに自動的に変換されることはありません。 代わりに、次のエラーが表示されます。

We cannot return a value of type Table in this context

読み込み/更新への影響

ファイアウォールのバッファーリングが動機となったこの変更は、読み込み/更新にも及びます。 入れ子になったテーブル、レコード、リストを、Power BI モデルと Power Query for Excel の Excel データ モデルに読み込む動作が変更されました。 以前は、入れ子になった項目は "[Table]""[Record]" などのテキスト値として読み込まれていました。 現在、これらはエラーとして処理されます。 null 値が読み込まれたテーブルに含まれ、読み込み結果でエラー数が増加します。

これらのエラーは読み込み/更新中にのみ発生するため、Power Query エディターには表示されません。

変更前

  • エラーなく読み込み/更新
  • 読み込まれたテーブルには "[Table]""[Record]" などが含まれます。

クリック後

  • 読み込み/更新でエラー
  • 読み込まれたテーブルには、"[Table]""[Record]" などの代わりに、null が含まれます。

解決方法

非スカラー値 (たとえばテーブル、リスト、レコードなど) を含む列を読み込みますか。 その場合、その列を削除することで、エラーを排除できるはずです。

その列を削除できない場合は、カスタム列を追加し、次のサンプルのようなロジックを使用して、以前の動作を再現してみてください。

if [MyColumn] is table then "[Table]" else if [MyColumn] is record then "[Record]" 
else if [MyColumn] is list then "[List]" else if [MyColumn] is function 
then "[Function]" else [MyColumn]

すべてのデータ ソースのプライバシーの設定をプライベートに設定した場合に、問題は Power BI Desktop で再現されますか。 その場合は、Power BI サービスでそのデータ ソースのプライバシー設定を構成し、非プライベートにすることで、エラーの解決を試みてください。