AddColumns、DropColumns、RenameColumns、および ShowColumns 関数

適用先 : キャンバス アプリ デスクトップ フロー モデル駆動型アプリ Power Platform CLI

の追加、削除、名前の変更、選択により、テーブル の表示を調整します。

概要

これらの関数は、列を調整することでテーブルの表示を調整します。

  • 複数の列を持つテーブルを単一列にし、LowerAbs といった単一列関数で使用できるようにします。
  • 計算列をテーブルに追加します (たとえば、QuantityUnit Price で乗算した結果を示す Total Price 列)。
  • ユーザーに表示するため、または数式で使用するために、列の名前をよりわかりやすく変更します。

テーブルは、文字列や数値と同じように、Power Apps の値です。 テーブルは計算式内で引数として指定できるほか、関数から結果として返すことができます。

Note

このトピックで説明する関数は、元のテーブルを変更しません。 その代わりに、引数としてテーブルを受け取り、変換が適用された新しいテーブルを返します。 詳細については、テーブルの使用 に関するページを参照してください。

これらの関数を使用しても、データ ソース の列は変更できません。 そのデータは、ソースで変更する必要があります。 Collect 関数を使用して、コレクション に列を追加できます。 詳細については、データ ソースの使用 を参照してください。

内容

AddColumns 関数は、テーブルに列を追加し、数式によってその列内の値が定義されます。 既存の列は変更されません。

数式はテーブルの各レコードについて評価されます。

現在処理されているレコードのフィールドは、この数式内で使用できます。 ThisRecord 演算子を使用するか、他の値を参照するのと同様に名前でフィールドを参照します。 As 演算子を使用して処理対象のレコードを指定することもできます。そうすると数式がわかりやすくなり、入れ子になったレコードにアクセスしやすくなります。 詳細については、以下の例と「レコードのスコープに関する作業」を参照してください。

DropColumns 関数は、テーブルから列を除外します。 それ以外の列はすべて変更されません。 DropColumns は列を除外し、ShowColumns は列を表示します。

RenameColumns 関数を使用して、テーブルの 1 つ以上の列の名前を変更します。この操作は、テーブルに含まれる列の名前 (置換対象の古い名前) と、テーブルに含まれない列の名前 (使用する新しい名前) を指定する、引数のペアを少なくとも 1 つ指定することで実行します。 以前の名前はテーブルに既に存在している必要があり、新しい名前は存在していてはなりません。 各列名は、古い列名または新しい列名のいずれかとして、引数リストに一度だけ表示できます。 列の名前を既存の列名に変更するには、まず DropColumns を使用して既存の列を削除するか、または 1 つの RenameColumns 関数を別の関数内に入れ子にすることで既存の列名を変更します。

ShowColumns 関数は、テーブルの列を表示し、その他すべての列を削除します。 ShowColumns を使用して、複数列テーブルから単一列テーブルを作成できます。 ShowColumns は列を表示し、DropColumns は列を除外します。

これらすべての関数の結果は、変換が適用された新しいテーブルになります。 元のテーブルは変更されません。 計算式を含む既存のテーブルを変更することはできません。 SharePoint、Microsoft Dataverse、SQL Server、およびその他のデータソースは、リスト、テーブル、(スキーマと呼ばれることがよくある) テーブルの列を変更するためのツールを提供します。 このトピックの関数は、元のテーブルを変更せずに、さらに使用できるように入力テーブルのみを出力テーブルに変換するだけです。

これらの関数の引数は委任をサポートします。 たとえば、'[dbo].[AllListings]'データ ソースには100万行が含まれている場合でも、Filter 関数が引数として使用され、関連するレコード検索をすべてのリストから取得します。

AddColumns( RealEstateAgents,
   "Listings",
   Filter(  '[dbo].[AllListings]', ListingAgentName = AgentName )
)

ただし、これらの関数の出力は委任されていないレコードの制限 の対象になります。 この例では、RealEstateAgents データ ソースには 501 以上のレコードがある場合でも、500 レコードだけが返されます。

この方法で AddColumns を使用する場合、フィルターRealEstateAgents の最初の各レコードに対してデータ ソースを個別に呼び出す必要があり、これにより多くのネットワーク チャターが生成されます。 [dbo](.[AllListings] が非常に小さく、頻繁に更新されない場合は、OnStartCollect 関数を呼び出して、アプリの起動時にデータ ソースをキャッシュすることができます。 代替策として、ユーザーが要求したときにのみ関連レコードを取得するように、アプリを再構築することもできます。

構文

AddColumns( Table, ColumnName1, Formula1 [, ColumnName2, Formula2, ... ] )

  • Table - 必須。 操作の対象となるテーブル。
  • ColumnName(s) - 必須。 追加する列の名前。 この引数には、文字列を指定する必要があります (たとえば、二重引用符を含む "Name" など)。 論理名を使用して列名を指定する必要があります。 Intellisense は論理名のみを提案します。 論理名は大文字と小文字を区別します。
  • Formula(s) - 必須。 各レコードについて評価する数式。 結果は、対応する新しい列の値として追加されます。 この数式では、テーブルの他の列を参照できます。

DropColumns( Table, ColumnName1 [, ColumnName2, ... ] )

  • Table - 必須。 操作の対象となるテーブル。
  • ColumnName(s) - 必須。 削除する列の名前。 この引数には、文字列を指定する必要があります (たとえば、二重引用符を含む "Name" など)。 論理名を使用して列名を指定する必要があります。 Intellisense は論理名のみを提案します。 論理名は大文字と小文字を区別します。

RenameColumns( Table, OldColumnName1, NewColumnName1 [, OldColumnName2, NewColumnName2, ... ] )

  • Table - 必須。 操作の対象となるテーブル。
  • OldColumnName - 必須。 元のテーブルから名前を変更する列の名前。 この要素は、引数のペアの先頭に (または、数式に複数のペアが含まれている場合は、各引数の先頭に) 表示されます。 この名前は、文字列である必要があります (たとえば、二重引用符を含む "Name" など)。 論理名を使用して列名を指定する必要があります。 Intellisense は論理名のみを提案します。 論理名は大文字と小文字を区別します。
  • NewColumnName - 必須。 置換後の名前。 この要素は、引数のペアの末尾に (または、数式に複数のペアが含まれている場合は、各引数のペアの末尾に) 表示されます。 この引数には、文字列を指定する必要があります (たとえば、二重引用符を含む "Customer Name" など)。 論理名を使用して列名を指定する必要があります。 Intellisense は論理名のみを提案します。 論理名は大文字と小文字を区別します。

ShowColumns( Table, ColumnName1 [, ColumnName2, ... ] )

  • Table - 必須。 操作の対象となるテーブル。
  • ColumnName(s) - 必須。 表示する列の名前。 この引数には、文字列を指定する必要があります (たとえば、二重引用符を含む "Name" など)。 論理名を使用して列名を指定する必要があります。 Intellisense は論理名のみを提案します。 論理名は大文字と小文字を区別します。

使用例

このセクションの例では、次のテーブルにデータが含まれている IceCreamSales データ ソースを使用します。

IceCream の例。

これらの例ではいずれも、IceCreamSales データ ソースは変更されません。 各関数は、データ ソースの値をテーブルに変換し、その値を結果として返します。

計算式 内容 結果
AddColumns( IceCreamSales, "Revenue", UnitPrice * QuantitySold ) 結果に Revenue 列を追加します。 各レコードで UnitPrice * QuantitySold が評価され、その結果が新しい列に配置されます。 Srawberry、Chocolate、Vanilla の結果。
DropColumns( IceCreamSales, "UnitPrice" ) 結果から UnitPrice 列を除外します。 この関数は列の除外に使用し、ShowColumns は列の表示に使用します。 QuantitySold 列のみを持つ、Strawberry、Chocolate、Vanilla の結果。
ShowColumns( IceCreamSales, "Flavor" ) 結果に Flavor 列のみを表示します。 この関数を列の表示に使用し、DropColumns は列の除外に使用します。 フレーバー列のみ。
RenameColumns( IceCreamSales, "UnitPrice", "Price") 結果の UnitPrice 列の名前を変更します。 フレーバー、価格、収益の結果。
RenameColumns( IceCreamSales, "UnitPrice", "Price", "QuantitySold", "Number") 結果の UnitPrice 列と QuantitySold 列の名前を変更します。 フレーバー、価格、収益として 3 つの IceCreams と列を使用した結果。
DropColumns(
RenameColumns(
AddColumns( IceCreamSales, "Revenue",
UnitPrice * QuantitySold ),
"UnitPrice", "Price" ),
"Quantity" )
次のテーブル変換を、数式の内側から順に実行します:
  1. UnitPrice * Quantity のレコードごとの計算に基づいて、Revenue 列を追加します。
  2. UnitPrice という名前を Price に変更します。
  3. Quantity 列を除外します。
この順番は重要なので、注意してください。 たとえば、名前を変更した後は、UnitPrice を使用した計算ができません。
単価に対する IceCream の例。

手順

このトピックですでに説明した例をいくつか試してみましょう。

  1. Button コントロールを追加してコレクションを作成し、その OnSelect プロパティを次の数式に設定します。

    ClearCollect( IceCreamSales,
       Table(
           { Flavor: "Strawberry", UnitPrice: 1.99, QuantitySold: 20 },
           { Flavor: "Chocolate", UnitPrice: 2.99, QuantitySold: 45 },
           { Flavor: "Vanilla", UnitPrice: 1.50, QuantitySold: 35 }
       )
    )
    
  2. Alt キーを押したまま、追加したボタンを選択します。

  3. 2 番目のButton コントロールを追加し、その OnSelect プロパティを次の計算式に設定し、実行します。

    ClearCollect( FirstExample,
       AddColumns( IceCreamSales, "Revenue", UnitPrice * QuantitySold )
    )
    
  4. ファイル メニューでコレクションを選択し、それから IceCreamSales を選択してそのコレクションを表示します。

    この図が示すように、2 番目の計算式はこのコレクションを変更しませんでした。 AddColumnsIceCreamSales を読み取り専用の引数として使用しました。関数は、その引数が参照するテーブルを変更しませんでした。

    新しい収益列を含む Ice Cream 営業コレクションの 3 つのレコードを示すコレクション ビューア。

  5. FirstExample を選択します。

    この図が示すように、2 番目の計算式は、列が追加された新しいテーブルを返しました。 ClearCollect 関数は、FirstExample コレクションの新しいテーブルをキャプチャし、ソースを変更せずに関数を介してフローした元のテーブルに追加します。

    新しい収益列を含む最初のサンプル コレクションの 3 つのレコードを示すコレクション ビューア。

コンポーネントで列をマップする

列のマップ を参照します。