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