以前は、レポートが 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 サービスでそのデータ ソースのプライバシー設定を構成し、非プライベートにすることで、エラーの解決を試みてください。