PowerAppsの2000件問題とは?原因と解決策をわかりやすく解説

先輩

「A子さん、このリスト…検索しても一部しか出てこないって言ってなかった?」

A子さん

「そうなんです!SharePointのデータが3000件くらいあるのに、検索しても途中までしかヒットしなくて…」

先輩

「それ、“2000件問題”だね」

A子さん

「え、なにそれ怖い…バグですか?」

先輩

「バグじゃなくて仕様。PowerAppsはデータを全部取ってるわけじゃないんだよ」

A子さん

「え?全部じゃないんですか!?」

先輩

「うん。条件によっては“最初の2000件だけ”しか見てない状態になる」

A子さん

「それって…気づかないと普通にミスりますよね?」

先輩

「その通り。だから実務だとちゃんと対策しないと事故る」

目次

1. 2000件問題の解説

PowerAppsを使い始めると、ある程度データが増えたタイミングでぶつかるのが「2000件問題」です。
見た目では正常に動いているように見えるため、気づかないまま運用してしまい、後から大きなミスに繋がるケースも少なくありません。

結論:2000件問題は「Delegation(委任)制限」によって発生し、対策しない限り正しいデータを扱えません。

具体的には👇

  • 条件によっては「最初の2000件」しか処理されない
  • 検索・フィルター結果が不正確になる
  • データ量が増えるほどリスクが上がる

つまり、小規模では問題なくても、実務規模になると確実に詰みます。

そのためPowerAppsでは、

  • Delegation対応の関数を使う
  • データ設計を見直す
  • そもそも扱い方を変える

といった対策が必須になります。


2. なぜ2000件制限があるのか

PowerAppsはクラウド上で動作するため、クライアント側に大量データを直接読み込むとパフォーマンス低下タイムアウトの原因になります。
そのため、デフォルトで「データの取得はサーバー側に委任(Delegation)」し、クライアントが処理する件数に制限をかけています。


3. 現在の制限値を確認する方法

  1. PowerApps Studioを開く
  2. [ファイル] > [設定] > [詳細設定] を選択
  3. 「非委任クエリのデータ行数の上限」の項目を確認
    • 既定値は 500件
    • 最大値は 2000件

4. 解決策(回避策)

4-1. Delegation対応の関数・条件を使う

PowerAppsでは一部の関数・演算子が委任に対応していません。
Filter, Sort, Search などを正しく使えば、サーバー側で絞り込みが行われ、2000件制限の影響を受けません。

例(委任対応パターン):

Filter(
    '顧客リスト',
    Status = "Active"
)

例(委任対応パターン):

Filter(
    '顧客リスト',
    Left(Title, 3) = "ABC"
)

Leftは委任非対応(SharePointの場合)

4-2. データ分割取得

2000件を超える場合、複数回に分けてデータを取得し、コレクションに蓄積する方法があります。

例:ID順に2000件ずつ取得

ClearCollect(
    colData,
    Filter(データソース, ID <= 2000)
);
Collect(
    colData,
    Filter(データソース, ID > 2000 && ID <= 4000)
);

4-3. データソース側で絞り込み

SharePointやSQL Serverなど、データソース側でビューやクエリを作成し、PowerAppsで直接2000件未満のデータを呼び出すのも有効です。


4-4. Dataverseへの移行

DataverseはPowerAppsとの統合度が高く、Delegation対応関数も多いため、大量データ処理に向いています。
SharePointからの移行も可能です。


5. まとめ

  • PowerAppsの2000件制限はDelegationの仕様
  • Delegation対応関数を使えばほぼ回避可能
  • 非対応関数を使う場合は分割取得事前フィルターで対処
  • 本格的な大量データ処理はDataverseやSQL Serverの利用も検討

💡 補足
Microsoft公式の「Delegationの概要」ページには、データソース別の対応関数リストが載っています。
公式ドキュメント(Microsoft Learn)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

かもろぐ屋です
Microsoftが大好きな社内SEです
転職経験あり・内定辞退経験あり

なお絶賛婚活中

コメント

コメントする

CAPTCHA


目次