Udemy 新コース: 作って学ぶPower BI!

Collect 関数によりレコードを一括で登録する | Power Apps

Patch関数で複数レコードを登録するにはForAll関数と組み合わせて繰り返し処理を実装する必要があり、パフォーマンスもあまり良くありません。

そんな特に候補として上がるのがCollect関数です。

ただ、Collect関数ではデータソースのスキーマに完全に一致する必要があるので、少し工夫が必要です。

ただ、コツが分かれば簡単に利用できる関数なので試してみましょう!

主な流れ

主には以下のような流れで一括登録用のデータ準備及びボタンを作成していきます。

カラのコレクションを宣言する

スキーマをデータソースとコレクションとで合わせます。

この動作はスクリーンのOnVisibleなどに仕込んでもよいでしょう。

一括で登録したいデータを準備

テキスト入力やギャラリーコントロールを利用して一括登録データを準備します。サンプルではテキスト入力に入力してボタンを押すと一旦先程宣言したからのコレクションに入るようになっています。

データソースへの一括登録

データソースに対してCollect関数を利用することで準備したデータを一括で登録することができます。

簡単にスキーマを合わせる方法

First 関数を使って最初の一行を取得してコレクションを宣言します。その後、初期化します。

コピーしました!

Power Fx
Collect(コレクション名, First(データソース));
Clear(コレクション名);

ここでFirst として1行だけ取ってきているのはデータソースのデータを沢山取得してしまうと読み込みに時間がかかってしまうからです。

Clearで初期化しているのは、Firstで取得したデータが1行コレクションに入っている状況になってしまうので、データが入っていない、カラのコレクションとするためです。

記載例はこのとおりです。

固定資産管理というデータソースからコレクションFixedAssetを宣言しています。

コピーしました!

Power Fx
Collect(FixedAsset, First(固定資産管理));
Clear(FixedAsset);

一括登録したいデータの準備

このコレクションに一括で登録したいデータを追加していきます。コレクションに対して追加する方法はPatchでも、CollectでもOKです。

テキスト入力に書かれた名前だけをコレクションにPatchで登録させました。

名前しかPatchしていませんが、最初にスキーマを定義したのでコレクションの中のデータを見てみるとちゃんとデータソースと同じスキーマを保持していることがわかります。

データソースへの一括反映

その後、コレクションをデータソースにCollectします。その方法はさっきとは書き方が逆です。

コピーしました!

Power Fx
Collect(データソース名, コレクション名)

再度同じデータの登録を行いたくないときは、処理の後はコレクションを初期化するとよいでしょう。

Collect関数で一括でデータがデータソース(今回はDataverse)に反映されました。

Patchで繰り返し処理させてデータを反映させている処理が長いプロセスなどがありましたらこちらの手法も参考にしてみてください。

以上、参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index