三島正裕のOffice365コラム「PowerAppsで売上ランキングを表示する。グルーピングをおぼえよう!」

Print Friendly, PDF & Email

こんにちは!クラウドビジネス担当の三島です。今回のOffice365徹底活用コラムではPowerAppsでランキング表示をさせてみたいと思います。PowerAppsでアプリケーションを作成すると、様々な種類のデータを集めることが出来ますが、集めたデータを活用するには、目的に応じたカタチにデータを加工する必要があります。Excelでも集めたデータをそのままシートに並べて活用することは稀で、データをソートしたり、件数を表示させたり、合計欄を設けて関数を入力したりしますよね。PowerAppsでもデータ集計をする関数は用意されていて、入力されたデータを様々な形で可視化させることが出来ます。ただ、PowerAppsでのデータ集計は、自由度が大きい反面、操作には少しコツが必要で、様々な制約の壁に悩まされることがあります。今回は商品の売上データをサンプルとして用意しました。このサンプルをベースにPowerApps上で売上ランキングアプリを作成することでグルーピングの仕方を解説してみたいと思います。

1.Common Data Serviceでエンティティを作成する。

最初にCommon Data Serviceでエンティティを作成します。エンティティの内容は下図を参考にして作成してみて下さい。※価格は数値のみ扱う場合はデータ型を整数として設定します。

エンティティの作成方法がわからない方は、前回のコラムの内容を参考に作成してみて下さいね。

◇Common Data Serviceで来客情報を管理する
https://www.si-jirei.jp/2019/01/23/powerapps%E3%82%B3%E3%83%A9%E3%83%A0/

2.PowerAppsでアプリケーションを作成する。

キャンパスアプリとして、PowerAppsでアプリケーションを作成します。今回は携帯電話レイアウトを選択して作成します。PowerAppsのホームより、「アプリ」を選択。「+アプリの作成」より「キャンパス」を選択。空のアプリより「携帯電話レイアウト」を選択します。「アプリの設定」よりアプリ名を任意で入力して保存して下さい。※当コラムでは「売上ランキング」としています。

3.アプリパーツを配置する。

続いて、作成したエンティティの中身をアプリケーションのスクリーンに表示してみましょう。アプリパーツの挿入は画面上部のメニューから「挿入」を選択して選びます。選んだパーツをスクリーンに配置して、プロパティに関数を入力します。画面のタイトルは任意で問題ありません。当コラムでは販売履歴としています。アプリパーツの配置や関数については下図を参考に設定してみて下さいね。ラベル、ギャラリー、アイコンを配置し、それぞれのプロパティに下図と同じように関数を設定頂くだけで完成するはずです。

4.商品別に売上額を集計する。

今度はエンティティ「product」の売上合計額を商品別に表示させてみましょう。商品別に売上合計額を表示するには「Group By」関数と「Sum」関数を使いますが、一度に集計することは出来ませんので、コレクションにデータを一時保存しながら進めていきます。

最初にエンティティ「product」を「Group By」関数で商品毎にグルーピングします。「Group By」関数には元となるデータソースと、グルーピングをする項目名(今回は商品)を指定し、指定した項目名以外のデータをまとめるためのグループ名を指定します。ClearCollectを実行するとグルーピングしたデータが「ProductGroup2」という名前でコレクションに一時保存されます。なお、このClearCollectが実行されるタイミングですが、スクリーンのOnVisibleというパラメータを使いますので画面が開いた直後に実行されます。画面を開き直すと元の一時データは上書きされます。下図にイメージを載せておりますので各項目の動きを確認してみて下さいね。

続いて「ProductGroup2」をベースに売上額を集計します。グループ「product(ピンク色の文字)」は商品単位に分けられたデータがテーブル形式で一時保存されています。ここで「Sum」関数を使うことで、グループ「product」内の売上額を商品単位に合算することが出来ます。合算された値は「SumPrice」という名前で元の「ProductGroup2」に紐づき、新たに「ProductGroupPrice2」という名前でコレクションに一時保存されます。

上記の内容をまとめると下図のようになります。

5.ギャラリーを使わずにランキング表示をする。

ランキング表の表現方法として、ランキング上位のコンテンツを大きく見せたり、目立つ位置にコンテンツを配置したりすることはよくありますよね。ランキング表を自由なレイアウトで表現をするには先程紹介したギャラリーを使った方法ではとても困難です。ランキング順位毎にコンテンツのデザインを変えるためには、ランキング順位毎にデータを取り出して加工をする必要があるのですが、これはどのようにしたら出来るのでしょうか。方法は色々とあると思うのですが、簡単に出来る仕組みを紹介したいと思います。

最初にエンティティ「product」をベースにコレクションを作成します。スクリーンのプロパティ「OnVisible」に3つのClearCollect文をセットします。最初のClearCollectで商品毎にグルーピングした内容をコレクションにセットします。2つ目のClearCollectで商品毎の売上額の合計を加えた内容をコレクションにセットします。3つ目のClearCollectで売上合計で降順にソートした内容をコレクションにセットします。

アプリケーションの各コンテンツの配置は下図のとおりとなっています。ランキング上位のコンテンツ程大きく表示させています。ランキング順位別のコンテンツの取得はFirstN関数とLast関数を組み合わせて実現しています。FirstN関数を実行するとレコードの最初から指定したレコード分データを取得します。Last関数を使い、FirstN関数で取得したレコードセットの最後のデータを取得することで指定するランキング順位のデータを取得しています。

商品の画像はOneDriveに置いた画像ファイルから取得しています。同じくOneDrive上に置いたExcelテーブルからファイルパスを取得して、ランキング順位に一致する商品の画像ファイルを取得しています。Excelテーブルを使用した画像ファイルの取得方法は過去のコラムで紹介させて頂いておりますので、こちらをご参考にしてみて下さいね。

◇PowerAppsで画像認識!?スマートフォンを活用した働き方改革
https://www.si-jirei.jp/2018/08/30/office365%E3%82%B3%E3%83%A9%E3%83%A0powerapps/

6.選択したエリアに含まれる店舗情報を表示する。

エリア情報をグルーピングして表示し、そこから選択したエリア内に含まれる店舗情報を売上ランキング順に表示させることも可能です。これを行うには、まずエリア毎にグルーピングしたレコードセットをコレクションに保存し、続いてエリアと店舗でグルーピングしたレコードセットをコレクションに保存します。ギャラリーでそれぞれのレコードセットを参照して結果を表示しますが、店舗情報はエリアのギャラリーで選択したエリアに含まれる店舗のみ表示するようFilter関数でフィルタリングをします。

7.おわりに

今回はPowerAppsでのデータ集計方法を紹介させて頂きましたが如何だったでしょうか。ExcelやAccessよりも複雑なところがあり、慣れるまでが大変だとは思いますが、PowerAppsでは様々なケースで必要になるテクニックですので、小さなケースでトライをしながらコツを掴んでみて下さいね。

それでは次回もお楽しみに。

※PowerAppsについては以下のページをご覧ください。

https://www.si-jirei.jp/office365/powerapps/

  • このエントリーをはてなブックマークに追加

Related post

更新情報

最新コラム

  1. こんにちは!クラウドビジネス担当の三島です。今回のOffice365徹底活用コラムではPowerA…
  2. はじめに 間もなく2019年度が始まります。出会いと別れのこの季節、新入社員向けの端末や組…
  3. ワークスタイルの変革コラム第33回「ビジネスチャット導入時にはお作法も改めるべき」 こんにち…

ログインステータス

Return Top