次の方法で共有


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

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

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

**ForAll 関数は、既存の列から作成された新しいレコードのテーブルを返すことで、テーブルを形成するためにも使用できます。

概要

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

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

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

注意

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

これらの関数を使用しても、データ ソース の列は変更できません。 そのデータは、ソースで変更する必要があります。 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 を使用する場合、Filter では RealEstateAgents の最初の各レコードに対してデータ ソースを個別に呼び出す必要があります。これにより多数のネットワーク チャターが生成されます。 [dbo](.[AllListings] が十分に小さく、頻繁に変更されない場合。 アプリの起動時に、OnStartCollect 関数を呼び出して、データ ソースをアプリにキャッシュすることができます。 代替策として、ユーザーが要求したときにのみ関連レコードを取得するように、アプリを再構築することもできます。

注意

バージョン 3.24042 より前の Power Apps では、列名は二重引用符を使用したテキスト文字列で指定され、データ ソースに接続されている場合は論理名である必要がありました。 たとえば、引用符のない表示名 名前 の代わりに、二重引用符で囲まれた論理名 "cr43e_name" が使用されました。 SharePoint およびスペースを含む列名を含む Excel データ ソースの場合、各スペースは "_x0020_" で指定されます。たとえば、"列名""Column_x0020_Name" となります。 このバージョン以降、すべてのアプリはこの記事で説明されている新しい構文に自動的に更新されました。

構文

列の追加( テーブル列名1数式1 [、 列名2数式2、... ] )

  • - 必須。 操作の対象となるテーブル。
  • ColumnNames - 必須。 追加する列の名前。
  • 数式 - 必須。 各レコードについて評価する数式。 結果は、対応する新しい列の値として追加されます。 この数式では、テーブルの他の列を参照できます。

列をドロップ( テーブル, 列名1 [, 列名2, ... ] )

  • - 必須。 操作の対象となるテーブル。
  • ColumnNames - 必須。 削除する列の名前。

列の名前を変更( テーブル古い列名1新しい列名1 [、 古い列名2新しい列名2、... ] )

  • - 必須。 操作の対象となるテーブル。
  • OldColumnNames - 必須。 元のテーブルから名前を変更する列の名前。 この要素は、引数のペアの先頭に (または、数式に複数のペアが含まれている場合は、各引数の先頭に) 表示されます。
  • NewColumnNames - 必須。 置換後の名前。 この要素は、引数のペアの末尾に (または、数式に複数のペアが含まれている場合は、各引数のペアの末尾に) 表示されます。

ShowColumns( テーブル, 列名1 [, 列名2 , ... ] )

  • - 必須。 操作の対象となるテーブル。
  • ColumnNames - 必須。 表示する列の名前。

使用例

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

IceCream の例。

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

内容 結果
AddColumns( IceCreamSales、収益、単価 * 販売数量 ) 結果に Revenue 列を追加します。 各レコードで UnitPrice * QuantitySold が評価され、その結果が新しい列に配置されます。 Srawberry、Chocolate、Vanilla の結果。
DropColumns( IceCreamSales, UnitPrice ) 結果から UnitPrice 列を除外します。 この関数は列の除外に使用し、ShowColumns は列の表示に使用します。 QuantitySold 列のみを持つ、Strawberry、Chocolate、Vanilla の結果。
列の表示(IceCreamSales、Flavor) 結果に Flavor 列のみを表示します。 この関数を列の表示に使用し、DropColumns は列の除外に使用します。 フレーバー列のみ。
列の名前を変更( IceCreamSales、UnitPrice、Price) 結果の UnitPrice 列の名前を変更します。 フレーバー、価格、収益の結果。
列の名前を変更( IceCreamSales、UnitPrice、Price、QuantitySold、Number) 結果の UnitPrice 列と QuantitySold 列の名前を変更します。 フレーバー、価格、収益として 3 つの IceCreams と列を使用した結果。
列の削除(
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 つのレコードを示すコレクション ビューア。

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

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