前回SharePointのデータの一括更新の方法と、その性能比較をしてみたので、今回はDataverseでの比較。
やってみたこと
今回はアイテムが500個あるDataverseに対し、文字列型の列「str」に値を一括設定してみた。
※設定[データ行の制限]は500のままなので、委任ができるUpdateIf以外の更新対象は先頭500件
※設定[データ行の制限]は500のままなので、委任ができるUpdateIf以外の更新対象は先頭500件

比較したのは以下の3つの関数。
- Patch
- UpdateIf
- ForAll
結論:Dataverseの一括更新もPatchが速い。
UpdateIf
まずUpdateIf。式はこんな感じ。
UpdateIf(Sample500, true, {str:"a"} )
500件の更新に約50秒ほどかかる。SharePointの更新よりは早いけど、やはりそれなりに遅い。

Patch
続いてPatch。式はこんな感じ。
ClearCollect(target, Sample500); // 全データをPower Apps側に持ってきて UpdateIf(target, true, {str:"b"} ); // UpdateIfでPower Apps側のデータを一括更新 Patch(Sample500,target); // Patchで一気に適用
結果はこちら。500件の更新が約15秒くらい。


ForAll
最後はForAll。式はこんな感じ。
With({records:Sample500}, ForAll(records As record, Patch(Sample500 , record, {str:"d"}); ) );
結果はこちらで、500件の更新が約1分くらい。

ということで結論は「Dataverseの一括更新も、SharePointの一括更新も、Patch関数を使用するのが一番速い」。
あとは、同じ操作でもSharePointよりDataverseの方が処理速度が速い。