2023/11/10追記
SharePointのリストの数が3万件ではなく3千万件だったので訂正しました。
すみませんでした。
この記事で伝えたいこと
そもそも、SharePointは 3万件 3千万まで保存できるよ
でもSharePointで5000件以上「まとめて」処理したり等すると、エラーになっちゃうよ
PowerApps側ではこれに引っかからないようにPowerApps自体がもう制限かけてるよ
独自調査の結果だったり、するので、そこは気をつけてください。
基本的には文末に全て(のはず)とつく前提で...。
本題
さて、早速ですが皆様いわゆる5000件問題に頭を悩まされたことはありませんか。
私は直接的にはないですが...PowerAppsのデータベースとしてSharePointを採用しているので
悩まされかけて自分なりに調査結果をまとめてみました。
実際問題どうなの?
SharePoint自体は3万件まで保存できる
3万件じゃありませんでしたすみませんでした。
3千万件でした。増えたから許して
えっ、じゃあ何が問題なの?といったところですが、5000件以上のものに対して一回で表示しようとしたりするとエラーになるようです。
実際のとこSharePointのリストのページでも何件かに分けて表示しているのがわかると思います。
この処理で5000件問題に対処しているわけですね。
ちなみに筆者はてっきり5000件以上保存したらもうやばいのかと思っていました。
-
Collectionの場合
そもそもPowerApps側で設定のデータ行の制限というところで1~2000件の間で制限をかけている(デフォルトでは500件)のでCollectionではエラーになることはないでしょう。
※データ行の制限をデフォルトの500件にしている場合の話
ただし、デフォルトではIDが古い順に取ってきてしまうのがすこしやっかいですが、
逆に言ってしまえばID等を新しい順に取ってくれば最新から500件取得することができます。
(もしくは、普通にフィルターを掛けてあげるとか・・・) -
SharePointを直接表示したい場合
ギャラリーにコレクションを入れたりするとデータ行の制限以上に件数が取れます。
ですが、やはりいわゆる5000件問題に引っかかってしまうようです。
筆者環境ですと5100件まで取ったところで止まったり、そのままもっと行けたりしたので即座にエラーではないのかもしれませんが、この辺曖昧ではありますがなるたけ避けてあげるのが得策でしょう。
この場合、ページで分ける、取得する条件を指定する、上述のようにID等を新しい順に並び替えて5000件以降は諦める、そもそも5000件行かないように定期的に削除する。等の対処が必要になります。
委任とかの話
すみません、実は正確に言うとデータ行とかの話とかと5000件問題とか別の話なんですよね・・・
- ギャラリーにコレクションを入れたりするとデータ行の制限以上に件数が取れます。
ここの話ですね。
委任できるものはデータ行の制限等に引っかからず、5000件問題に引っかかります。
委任とはつまり、簡単に言うとデータベースに処理は任せるぜ!な感じです。
こっち側で処理する際にはデータ行の制限に引っかかります。
また、関数によって委任できるできないの違いがあります。
詳しくは自分も理解しきれていないのもあるので下記サイトにおまかせしようと思います。
Power Apps:結局「委任に関する警告」ってなに?
https://artisan.jp.net/blog/power-apps-canvas-apps-delegation-overview/
あとがき
いかがでしたでしょうか。
冒頭でも書きましたが、筆者は5000件以上保存し始めた時点でエラーが起き始めるものだとばっかり勘違いしていました。
PowerAppsではギャラリーで5000件以上表示できるとしても基本的にスクロールの都度(多分100件ごと?)読み込まれるのであまり悩まされることは少ないのかもしれません。
PowerAppsで5000件もデータ一回で表示したいことってあんまりないですしね・・・。
そこまで来ると別のものを使ったほうがいい気がします。
参考