MENU

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

目次

1. 2000件問題とは

PowerAppsでは、データソース(SharePoint、Dataverse、SQL Serverなど)から一度に取得できるレコード数の既定上限が2000件に設定されています。
これは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


目次