今回は「アンケートの集計結果」のように、PowerApps でレコードを集計して件数を表示する方法を紹介します。
目次
データソースの構成
サンプルのデータソースは、下図構成のSharePoint リスト(旅行先リスト)を使用します。
本記事では下記リストを利用して説明を行います。
列名 | 列の種類 |
---|---|
希望旅行先 | 1行テキスト |
年齢 | 選択肢 |
画面の構成
PowerAppsにはギャラリーを配置しています。
ギャラリーのレイアウトは「タイトルとサブタイトル」を選択しています。
手順
手順1.Gallery の設定
Gallery には集計後(重複を削除した状態)の「旅行先リスト」を表示するので、Gallery の「Items」に下図のコードを入力します。
Distinct 関数は、指定した列から重複レコードを削除する関数です。
上図では「希望旅行先」列で重複のチェックをしています。
Docs - PowerApps での Distinct 関数
手順2.Title の設定
Galley - Title の「Text」に下図のコードを入力します。
「ThisItem.Result」で Distinct 関数の結果を表示します。
Distinct関数は結果を「テーブル形式」で返します。
返されたテーブル値はResult で取得・参照します。
今回は Result で、重複なしの「希望旅行先」を取得しています。
手順3.SubTitle の設定
Galley - SubTitle の「Text」に下記のコードを入力します。
Filter関数は、条件に一致するレコードを絞り込んでテーブル形式で返します。
Docs - PowerApps での Filter、Search、および LookUp 関数
CountRows関数は、テーブルのレコード件数を数値で返します。
Docs - PowerApps の Count、CountA、CountIf、および CountRows 関数
下図は完成イメージです。
「旅行先リスト」から「希望旅行先」列ごとに集計を行ったので「沖縄」をカウントしたら5件あった、というイメージですね。
しかし、1点補足に記載の注意事項があります。
補足.注意事項
委任問題
PowerApps でデータを扱う場合、委任の問題が大きく関係してきます。
Docs - キャンバス アプリでの委任について
PowerApps は、データ処理を PowerApps 側で行わず、データソース(SharePoint、SQLServerなど)に処理を委任して、処理結果を PowerApps 側に持ってくることができます。
これにより端末や通信時の負担を大幅に減らせるのです。
この「データソースに処理を委任することができるかどうか」が PowerApps で大規模なデータセットを操作する上で重要なポイントになります。
大規模なデータセットを操作するには、委任できるデータソースと数式が必要です。
・データソースと数式で委任がサポートされている場合は、データソース側に処理が委任されて、処理結果がPowerAppsに返されます。
・データソースと数式で委任がサポートされていない場合は、PowerApps 側で処理が必要なため、連携されるレコード数などが制限されます。
PowerApps の仕様で、PowerApps 側で処理可能なレコード件数は、500 件に制限されます。
※手動による設定変更で、MAX 2,000 件まで増加可能。
委任可能な関数と、委任不可の関数を組み合わせた場合
委任可能な関数(Filterなど)と委任不可な関数(CountRowsなど)を組み合わせた場合、委任不可なものとなり、返されるレコード数は最大500件となります。
本記事で利用した「旅行先リスト」を使って500件を超えるとどうなるのか試してみました。
下図右側の集計後リストは、今回の記事と同じ方法で作成した Galley です。
SharePointの旅行先リストには「沖縄」は523件あるのに、PowerAppsでは「沖縄」が500件に減っています。
理由は、CountRows 関数は委任不可の関数であるため、PowerApps 側で処理可能な件数500件を超えたからです。
データソース全体が500件を超える場合、もしくは、絞り込まれた後の件数が500件を超える場合は、正確な計算ができないため、十分にご注意ください。