PowerAppsでデータテーブルを操作する3つの関数の違い~AddColumns,Collect,Patch~
PowerAppsのデータテーブルで
データを操作する関数に、以下の3つがあります。
- AddColumns
- Collect
- Patch
しかし、この3つの違いが初心者にとってはイマイチわかりません。
どういうところで、どの関数を使えばいいのか私は正直わかりませんでした。
なのでこの記事では、それぞれの使い方と違いを紹介しどの操作を行いたい時に、どの操作を行えばいいか紹介していきます。
PowerAppsをキャッチアップ中の方はぜひ参考にしてみてください。
目次(クリックで読みたい部分にジャンプできます)
3つの関数の大まかな違い
まずは、3つの関数の大まかな違いについて紹介します。
違いがある程度分かってから、細かい使用方法などを紹介していきます。
3つの主な違い
AddColumns
= 列を追加する
Collect
= データを追加する
Patch
= 特定のデータを更新する
この関係図のような関係になります。
PowerAppsで扱うデータはテーブル以外は視覚的に表すことができないので、想像になりますが、今自分がどのような操作をしようとしているのかを理解して、適切な関数を使うようにしましょう。
列を追加する~AddColumns~
AddColumnsは列を追加する関数です。
構文は以下のようにします。
AddColumns(データソース, "新しい列名", 式);
「データソース」
は、既存のテーブルやコレクションを指します。
「新しい列名」は追加する列名。
「式」はその列に格納する値を計算するための式です。
複数の列を追加する場合
複数の列を追加する場合には、以下のように書きます。
AddColumns(データソース, "新しい列名", 式, "新しい列名2", 式2);
上記のように、「新しい列名」と「式」を加えていけば複数の列を追加することができます。
AddColumnsの使用例
例えば、商品のリストがあり、
それぞれの商品に対して販売各区に税を加算した「税込価格」の列を追加したい としましょう。
AddColumns(商品リスト, "税込価格", 販売価格 * 1.1)
この式は、「商品リスト」の各アイテムに対して
「税込価格」の列を追加し、元の「販売価格」に10%うぃ加算した値を計算しています。
データを追加する~Collect~
Collectはデータを追加する関数です。
まずは、使用方法です。
Collect(データソース,Item)
「データソース」
は、既存のテーブルやコレクションを指します。
「Item」はデータソースに追加する1つ以上のレコードまたはテーブルです。
Collectの使用例
Collect(Products, {Name: "テーブル", Price: 3000, Quantity: 10})
これは、Productsコレクションに新しいレコードを追加します。
このレコードは、Name、Price、Quantityの3つのフィールドに対して、データを追加しています。
複数のレコードを追加する場合
Collectも複数のレコードを追加することができます。
Collect(Products, {Name: "椅子", Price: 1000, Quantity: 15}, {Name: "ランプ", Price: 500, Quantity: 20})
AddColumnsとも似ていて、{}を複数追加することで可能になります。
特定のデータを更新する~Patch~
最後に特定のデータを更新するPatch関数についてです。
特定のデータを更新するとありますが、
実は、データを追加することも可能です。(方法については後述します。)
まずは、構文について知っておきましょう。
Patch(データソース, 対象のレコード, { ColumnName1: Value1, ColumnName2: Value2, ... } )
データソースは先ほどと同様です。
対象のレコードは、LookUp関数などで更新したいレコードを抽出してきます。
簡単な使用例を見てみましょう。
Patchの使用例
Patch( Products, Lookup(Products, Title="Old Product"), { Price: 200 } )
これはProducts
データソース内でTitle
が「Old Product」のレコードを検索し、そのPrice
を200に更新します。
LookUpの使い方については以下で解説しています。
PowerAppsでlookupの使い方、複数条件の指定方法を解説 - プロラブ (abyblog.online)
Patchでレコードを追加することもできる
レコードを追加するのは、Collectだと紹介しました。
しかし、Patch関数でもレコードを追加することができます。
Patch関数でレコードを追加する時には、default関数を使います。
chatGPTでレコードを追加する方法を聞くと、Patchで追加する方法の方が多く提案される気がします。
Patch(データソース, Defaults(データソース), { ColumnName1: Value1, ColumnName2: Value2, ... } )
まとめ
今回は、PowerAppsでデータテーブルを操作できる3つの関数について紹介しました。
私がPowerAppsを始めた頃もこの3つの関数が入り混じっていて、どれがどう違うのかよく理解できませんでした。
今回は、同じような境遇の人に役立ってもらえればと思います。
次回は、PowerAppsを使用して、組織図を書く方法について紹介していきます。