Power Apps iconPower AppsことはじめPower Apps icon
【データ統合】予算・進捗可視化ダッシュボード
Step 4 / 4

[最適化] 動作が重い…を解決する「委任」エラーへの対処法

大量データを扱う際のパフォーマンス問題を解決するテクニックです。

Power Appsで入力アプリを開発できても、例えば製造業などで日々の生産実績や各ラインの予算執行明細などを取り扱うと、あっという間に数千〜数万件のデータ量になります。

このようなビッグデータをPower Appsで扱う際、「委任(Delegation)」の問題は避けられず、アプリのパフォーマンスの低下(動作が重い、データが一部しか表示されない)も発生します。
 ※委任は資産管理アプリのシリーズでも説明しています

委任(Delegation)とは何か?

Power Appsでは、データの検索(Search)や絞り込み(Filter)、並べ替え(Sort)といった処理を頻繁に使用します。
これらはアプリ内(スマホやPCのメモリ上)で行うのではなく、接続先のデータベース(DataverseやSharePointなど)に「委任」し、結果だけを受け取っています。
これにより、データが数万件あっても、すぐに必要な20件だけを画面に表示できます。

ですが、「委任できない関数」や「複雑すぎる条件式」を使うと、データベース側が処理できず、Power Apps側が、全データを一旦ダウンロードしてアプリ内で計算しようとします。

これが「動作が重くなる」原因です。
さらに、Power Appsの仕様上、ダウンロードできるデータ件数には上限(デフォルト500件、最大2000件)があり、2000件目以降のデータが計算結果に含まれません(データが欠落する)。

委任エラーの代表的な原因

  • 委任できない関数の使用
    SumCountRows などの集計関数や、Search 関数(SharePointの場合、特定条件下で委任不可)など
  • 複雑な型の比較
    SharePointの「選択肢列(複数選択)」や「ユーザー列」に対する複雑なフィルタリング
  • 特定のテキスト処理
    In 演算子(部分一致検索)や、LeftMid などのテキスト操作関数を伴う条件式

Caution: 使用するデータソース(Dataverse、SharePointなど)により、委任できる/できない関数は異なります。一般的に、Dataverseの方が委任可能な範囲が広いです。

委任エラーを回避する3つのアプローチ

1. 委任可能な関数に書き換える

最も基本的な対策です。
警告(青い波線)が出た場合は、数式を見直します。

  • NG例(委任できない)
     Filter(BudgetTable, "A工場" in 工場名)
  • OK例(委任できる)
     Filter(BudgetTable, 工場名 = "A工場")StartsWith(工場名, "A工場")

部分一致検索(in)はデータソースによっては委任できません。
ただし、完全一致(=)や前方一致検索(StartsWith)であれば委任できるケースが多く、運用や設計を見直して代用できないか検討します。

2. 対象データを事前に絞り込む(プレフィルタリング)

アプリ全体の要件を見直し、「本当に数万件の全データを一度に扱う必要があるか?」を考えます。
例えば、「今年度のデータ」だけが必要であれば、最初にその条件で絞り込むのが有効です。

// 2026年のデータだけなら500件以下に収まると仮定
Filter(BudgetTable, Year(Occurrence) = 2026)

Occurrence(発生年月)を使う場合、比較演算子を使い、日付を絞り込むのも可能です。

3. コレクション(ClearCollect)を活用する

どうしても委任できない処理を行う場合、「委任可能な条件でデータを2000件以下に絞り込んだ上で、コレクションに格納する」 という手法があります。

アプリの起動時(OnStart)や、画面の表示時(OnVisible)に以下のように記述します。

// A工場のデータ(2000件未満であることを前提)をコレクションに取得
ClearCollect(
    colFactoryAData,
    Filter(BudgetTable, Factory = "A工場")
);

あらかじめコレクション(colFactoryAData)にデータを取り込んでしまえば、そのコレクションはアプリ内のローカルメモリにあるため、Sumや複雑なIf構文などを使っても委任エラーは発生しません。

ダッシュボード開発においては、「綺麗なUI」以上に「サクサク動くこと(パフォーマンス)」がユーザー体験を大きく左右します。
データ構造の設計(ステップ1)と、この委任への理解を深めることで、より実用的で堅牢なPower Appsアプリを構築できるようになります。

広告