7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PowerApps】テーブルから集計したレコード件数を表示する

Last updated at Posted at 2020-12-11

#【はじめに】#
今回紹介するのは「テーブルから集計したレコード件数を表示する」方法です。
小ネタ記事です。笑
PowerApps でちょっとしたアンケートの集計結果を表示する場合などに利用できるかと思います。

ちなみに私は、息子のトイトレ用アプリを作成する際に、毎日の回数を集計し表示する際に利用しました。
image.png

#・サンプルアプリの構成#
サンプルとして作成したアプリの構成です。
SharePointリスト(希望旅行先リスト)をデータソースとして、集計結果を Gallery で表示しています。
Gallery のレイアウトは「タイトルとサブタイトル」を選択しています。

image.png

#手順1.Gallery の設定#
Gallery のデータソースは「希望旅行先リスト」、レイアウトは「タイトルとサブタイトル」を選択します。
Gallery の「Items」に下記コードを設定します。
image.png

今回は「旅行先リスト」の「希望旅行先」列で重複をチェックしています。
結果は「テーブル形式」で返され、参照する場合は Result を指定します。
Result から取得可能なデータは、重複なしの「希望旅行先」です。
image.png

※Distinct 関数は、指定した列から重複レコードを削除する関数です。
 Docs - PowerApps での Distinct 関数

#手順2.Title の設定#
Galley - Title の「Text」に下記コードを設定します。
「ThisItem.Result」とすることで Distinct 関数の結果を表示します。
image.png

#手順3.SubTitle の設定#
Galley - SubTitle の「Text」に下記コードを設定します。
image.png
Filter関数は、条件に一致するレコードを絞り込んでテーブル形式で返します。
 Docs - PowerApps での Filter、Search、および LookUp 関数
CountRows関数は、テーブルのレコード件数を数値で返します。
 Docs - PowerApps の Count、CountA、CountIf、および CountRows 関数

「旅行先リスト」から「沖縄」でフィルタリングしてカウントしたら3件あった。
というイメージですね。
出力結果は下図赤枠内の通り。
image.png

これで完成です。
ただし、ここで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件を超えたからです。
image.png

データソース全体が500件を超える場合、もしくは、絞り込まれた後の件数が500件を超える場合は、正確な計算ができず表示結果も問題ありとなる可能性があるため、十分にご注意ください。

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?