この記事ではPoweApps(MSパワーアップス)のアプリ内のメモリに一時的にデータを保存できるコレクションの基本と使用例、そしてそれに必要なCollect関数の使い方について実演で説明しています。
(動画時間:5:54)
コレクションとは?コレクションの使用例
こんにちは、リーンシグマ、ブラックベルトのマイク根上です。業務改善コンサルをしています。
PowerAppsでは外部のデータベースにつながりデータの取得や変更が簡単に出来ますが、それを高頻度でやるとちょっと動作が遅く感じてしまいます。
ですので、その代わりにアプリ内のメモリに一時的にデータベースを作り、データの追加や変更をして最後に完成したデータを外部のデータベースに保存する方法にするとユーザーの操作感が格段に上がります。
その場所をコレクションと呼びます。他のコンピュータ言語で言う配列の様な働きをします。
しかし複数のユーザーがいる時は注意が必要です。一人のユーザーがその様にコレクションを使っている間に、他のユーザーがソースデータを書き変えるとデータの整合性がとれません。その可能性を踏まえてアプリ設計をする必要が有ります。
他の使い方ではアプリ起動直後に外部データをコレクションに全て保存してそれを参照する様にするとオフラインのアプリを作る事も可能です。
また複数のコレクションを使う事でデータの加工や集計をする事も出来ます。
コレクションの作り方:Collect関数
それではコレクションを実際に使ってみましょう。コレクションにデータを入れるところからやります。
新規のコレクションの作成やデータの追加をするにはCollect関数を使います。
ボタンを一つ挿入し、OnSelect属性に「Collect(」と入れると必要な構文の説明が上に出てきます。最初にCollectionと書いてありますね。これから作るコレクションの名前を入れるのです。何でも良いのですが、ここでは「MyCol」とします。
カンマを入れて次がItemです。後で説明しますが、このように「{あいさつ:”こんにちは”}」と入れます。
プレビューにしてそのボタンをクリックするとさっきのCollect関数が起動します。クリックしましたが何が変ったのでしょうか?
コレクションの確認の仕方:「ビュー」⇒「コレクション」
コレクションの状態を見る方法があります。メニューから「ビュー」「コレクション」で僕の作ったMyColのコレクションの中に「あいさつ」という列に「こんにちは」が入っているのが分かります。
さっきの数式「{あいさつ:”こんにちは”}」の意味は何でしょうか?PowerAppsではこの波カッコの書き方はよく使います。結果から分かりますが、「あいさつ」という列に「こんにちは」の文字データが代入されたのです。
左側に列名を、代入の記号は他のコンピュータ言語ではよく「=(イコール)」が使われますが、PowerAppsでは「:(コロン)」です。そして右側に入れたいデータを書きます。今回は文字なのでダブルクォーテーションが要ります。数値だったらダブルクォーテーションは要りません。
もう一つやってみると、「あいさつ」の列に「おはよう」を入れましょう。「Collect(MyCol,{あいさつ:”おはよう”}」
またプレビューにしてボタンを押して、コレクションの状態を見ると、「おはよう」が追加されています。
次にカンマを入れてから「誰に」という列を加えて、「友達」としました。「Collect(MyCol,{あいさつ:”おはよう”,誰に:”友達”})」
結果を見ると新しく「誰に」列が出来て、その列に「友達」というデータが追加されましたね。
皆さんもこの様にご自分で実際にやってみる事が習得する早道です。
LookUp、ClearCollectとClear関数
次にコレクションの情報を使って見ましょう。例えばラベルを一つ挿入して、Text属性に「LookUp(MyCol,誰に=”友達”,あいさつ)」と入れると「おはよう」が出てきました。
この数式の意味はMyColコレクションの「誰に」列の中で「友達」というデータを探してそのレコードの「あいさつ」列のデータを表示しなさいという意味です。
Collect関数はどんどんデータを追加していきます。実際にやってみます。たまにコレクションを空にしてからレコードを追加したい時もあります。その時はClearCollect関数を使います。
さっきの数式にClearをつけてやってみると、「ClearCollect(MyCol,{あいさつ:”おはよう”,誰に:”友達”})」コレクションが初期化されてレコードが追加されました。これがClearCollect関数の働きです。
Collectを取ってClear関数にするとその中にMyColだけ入れると、「Clear(MyCol)」です。これでそのコレクションを空に出来ます。
テーブルを丸ごとコレクションに入れる
次に一つのテーブルを丸ごと入れましょう。Collect関数でMyCol2というコレクションを作ります。あらかじめ「Tbl_ProductMaster」という外部データソースを用意しておきました。
ボタンのOnSelect属性に「Collect(MyCOl2,Tbl_ProductMaster)」と入れて、プレビューにしてそのボタンを押し、コレクションの状態を見ると、丸ごとデータが入ったのが分かります。
最後に編集したコレクションのデータを外部のデータソースに戻したいですね。さっきの逆で「Collect(Tbl_ProductMaster,MyCOl2)」としても残念ながらこれにはCollect関数は使えません。これについては別の動画でご説明します。
今日はPowerAppsのコレクションとCollect関数について話しました。これについてのマイクロソフトの公式情報のページを動画説明欄に張っておきますのでご覧下さい。
<<マイクロソフト公式ページ:Collect関数>>
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/function-clear-collect-clearcollect
<<マイクロソフト公式ページ:コレクションの作成と更新>>
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/create-update-collection
「こちらの記事も読まれてます。」