Power Query Editorを使用して、CustomersとLocationsという名前の2つのMicrosoft SharePoint OnlineリストからPower BI Desktopにデータを取り込みます。
各リストには25,000行以上が含まれています。「顧客」リストでは「場所」が参照され、ドロップダウンリストに表示される条件付き値が生成されます。
Power Queryエディターで、次のクエリを作成します。

読み込み時間が長くなり、Power Query Editor が最終データセットの各行の URL にアクセスしていることがわかっています。
クエリを最適化する必要があります。解決策は開発作業を最小限に抑えるものでなければなりません。
あなたはどうすべきでしょうか?
正解:A
お客様が経験されているパフォーマンスの低下は、既知のボトルネックです。
Table.ExpandTableColumn は、プライマリリストの各行ごとに個別の API 呼び出しをトリガーします。
25,000行の場合、これは25,000件以上の個別のHTTPリクエストを意味し、そのため処理速度が非常に遅く感じられるのです。
最も効率的な解決策は、マージ(結合)操作とバッファリングを組み合わせて、繰り返し呼び出しを行うのではなく、メモリ内で拡張が行われるようにすることです。
推奨ソリューション
*-> 従来のテーブル結合(マージ):ネストされたレコードを直接展開する代わりに、両方の SharePoint リストを個別のクエリとして読み込みます。共通のキーを使用して Power BI でマージ クエリ操作を実行します。これにより、ワークロードは各リストにつき 1 つずつ、合計 2 つの API 呼び出しに削減され、「展開」はローカルのコンピューターのメモリで実行されます。
Table.Buffer: カスタム関数またはマージを使用する場合は、セカンダリテーブルを Table.Buffer(SecondaryTable) でラップしてください。これにより、データがメモリ内で「固定」され、Power Query が処理する行ごとにソース全体を再評価するのを防ぎます。
SharePoint REST API と OData: 処理速度を最大限に高めるには、SharePoint REST API を使用してデータをバッチ処理 (例えば、一度に 5,000 アイテム) で取得します。$select を使用すると必要な列のみを取得でき、$expand を使用すると標準コネクタよりも効率的にルックアップを処理できます。
早期にフィルタリングする:結合が行われる前にデータペイロードを最小限に抑えるため、両方のクエリの最初のステップとして、行をフィルタリングし、不要な列を削除するようにしてください。
参照:
https://learn.microsoft.com/en-us/power-query/optimize-expanding-table-columns