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を使用して、組織図を書く方法について紹介していきます。

(Visited 1,187 times, 2 visits today)