SharePointのデータの一括更新について聞かれたので、ついでに性能比較もしてみた。
やってみたこと
今回はアイテムが500個以上あるSharePointリストに対し、「文字列」型の列に値を一括設定してみた。
※設定[データ行の制限]は500のままなので、更新対象は先頭500件
※設定[データ行の制限]は500のままなので、更新対象は先頭500件
比較したのは以下の3つの関数。
- Patch
- UpdateIf
- ForAll
結論:SharePointリストの一括更新はPatchが速い。
UpdateIf
まずUpdateIf。式はこんな感じ。
UpdateIf('501sample', true, {s:"a"} );
式はシンプルで悪くないんだけど、500件の更新に約1分半ほどかかる。
Patch
続いてPatch。式はこんな感じ。
ClearCollect(target, '501sample'); // 全データをPower Apps側に持ってきて UpdateIf(target, true, {s:"b"} ); // UpdateIfでPower Apps側のデータを一括更新 Patch('501sample',target); // Patchで一気に適用
結果はこちら。500件の更新が約20秒くらい。
ForAll
最後はForAll。式はこんな感じ。
With({target:'501sample'}, ForAll(target, Patch('501sample',ThisRecord, {s:"f"}); ) );
意外と善戦して500件の更新で約1分10秒くらい
ということで結論はPatchでの一括更新が一番早かった。
ただしデータソースがDataverseの場合、UpdateIfが委任できるため結果が変わる可能性あり。こちらは次回。