次の方法で共有


Sort 関数と SortByColumns 関数

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

テーブル を並べ替えます。

注意

PAC CLI pac power-fx コマンド は、 SortByColumns 機能をサポートしていません。

Description

Sort関数は、数式に基づいてテーブルを並べ替えます。

数式は、それぞれのテーブルのレコード に対して評価され、結果はテーブルの並べ替えに使用されます。 数式の結果は、数値、文字列、またはブール値になる必要があります。結果がテーブルまたはレコードになることはできません。

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

最初に列を並べ替え、次に別の列で並べ替えるには、別の列に Sort 数式を埋め込みます。 たとえば、この数式を使用すると、 最初に連絡先 テーブルを LastName 列で並べ替え、次に FirstName 列で並べ替えることができます: Sort( Sort( Contacts, LastName ), FirstName )

SortByColumns関数を使用して、1 つ以上の列に基づいてテーブルを並べ替えることもできます。

SortByColumnsのパラメーター リストには、並べ替えの基準となる列の名前と、列ごとの並べ替えの方向が表示されます。 並べ替えは、パラメーターの順序で実行されます (最初の列が最初に並べ替えられ、次に 2 番目の列が並べ替えられるという順序)。 列名は、文字列として指定し、パラメーター リストに直接指定する場合は、二重引用符で囲む必要があります。 たとえば、 SortByColumns( CustomerTable, "LastName" )などです。

SortByColumnsドロップダウン コントロールまたはリスト ボックス コントロールと組み合わせて、ユーザーが並べ替える列を選択できます。

昇順または降順の並べ替えに加えて、 SortByColumns は値の単一列テーブルに基づいて並べ替えることができます。 たとえば、["Monday","Tuesday"、"Wednesday"、"Thursday"、"Friday"、"Saturday"、"Sunday"] を並べ替え順序として指定すると、曜日の名前に基づいてレコードを並べ替えることができます。 Monday" が含まれるレコードが先頭に表示され、続いて Tuesday の順序で表示されます。 並べ替えテーブルに表示されないレコードは、リストの末尾に表示されます。

テーブル は、文字列や数値と同じように、 Power Apps内の値です。 関数に渡して、関数から返すことができます。 Sort および SortByColumn はテーブルを変更しません。代わりに、テーブルを引数として受け取り、並べ替えられた新しいテーブルを返します。 詳細については、テーブルの使用 に関するページを参照してください。

委任

可能な場合、Power Apps はオンデマンドの結果を通じてフィルター操作と並べ替え操作をデータ ソースやページに委任します。 たとえば、データが入力されたギャラリー コントロールを表示するアプリを起動すると、最初はレコードの最初のセットのみがデバイスに表示されます。 ユーザーがスクロールすると、追加のデータがデータ ソースから引き出されます。 その結果、アプリの起動が高速になり、大規模なデータ セットにアクセスできます。

ただし、常に委任できるとは限りません。 データ ソースによって、委任がサポートされる関数や演算子が異なります。 数式を完全には委任できない場合、作成環境は委任できない部分を警告でフラグします。 可能であれば、委任できない関数や演算子を使用しないよう、数式を変更することを検討してください。 委任一覧は、委任できるデータ ソースや操作の詳細を示します。

委任できない場合、Power Apps はローカルで作業するために少量のレコードのセットのみを引き出します。 フィルター関数と並べ替え関数は、削減されたセットのレコードで機能します。 ギャラリーで入手できるものは完全なストーリーでない場合があり、ユーザーの混乱を招くことがあります。

詳しくは、「委任の概要」を参照してください。

構文

Sort( Table, Formula [, SortOrder ] )

  • - 必須。 並べ替えるテーブル。
  • - 必須。 この数式は、それぞれのテーブルのレコードに対して評価され、結果はテーブルの並べ替えに使用されます。 テーブル内の列を参照することができます。
  • SortOrder - オプション。 SortOrder.Descending を指定して、降順でテーブルを並べ替えます。 SortOrder.Ascending がデフォルト値です。

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • - 必須。 並べ替えるテーブル。

  • ColumnNames - 必須。 文字列として、並べ替える列名。

  • SortOrders - オプション。 SortOrder.Ascending または SortOrder.DescendingSortOrder.Ascending がデフォルトです。 複数の ColumnNames が指定されている場合は、最後の列以外に、SortOrder を含める必要があります。

    注意

    名前にスペースが使われている SharePoint と Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。 たとえば、"Column Name""Column_x0020_Name" として指定します。

SortByColumns( Table, ColumnName, SortOrderTable )

  • - 必須。 並べ替えるテーブル。

  • ColumnName - 必須。 文字列として、並べ替える列名。

  • SortOrderTable - 必須。 並べ替えの対象となる、値を含んだ単一列テーブル。

    注意

    名前にスペースが使われている SharePoint と Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。 たとえば、"Column Name""Column_x0020_Name" として指定します。

以下の例では、次のテーブルにデータが含まれている IceCreamデータソース を使用します:

IceCream の例。

Description 結果
Sort(アイスクリーム、フレーバー)

SortByColumns( IceCream, "Flavor" )
IceCreamFlavor 列で並べ替えます。 Flavor 列に文字列が含まれているため、テーブルはアルファベット順に並べ替えられます。 既定では、並べ替え順序は昇順です。 アルファベット順に並べ替え済み。
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
IceCreamQuantity 列で並べ替えます。 Quantity 列に数値が含まれているため、テーブルは数値の順で並べ替えられます。 既定では、並べ替え順序は昇順です。 数値でソート済み。
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
IceCreamQuantity 列で並べ替えます。 Quantity 列に数値が含まれているため、数値の順で並べ替えられます。 並べ替え順序は、降順に指定されています。 数値で降順に並べ替え済み。
Sort( IceCream, Quantity + OnOrder ) IceCream を、各レコードの Quantity 列と OnOrder 列の合計で並べ替えます。 合計が数値であるため、テーブルは数値の順に並べ替えられます。 既定では、並べ替え順序は昇順です。 生の列の値ではなく数式で並べ替えるので、 SortByColumnsを使用しても同等はありません。 数値で昇順に並べ替え済み。
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
まず IceCreamOnOrder 列で並べ替えてから、次に Quantity 列で並べ替えます。 最初の並べ替えで OnOrder に基づいて「Pistachio」が「Vanilla」の上に移動し、次に Quantity に基づいて、共に適切な位置に移動します。 Vanilla の後、Pistachio でソート済み。
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) 「Pistachio」と「Strawberry」を含んだ単一列テーブルに基づいて IceCreamFlavor 列で並べ替えます。 Flavor 列に「Pistachio」があるレコードが結果の先頭に表示され、次に「Strawberry」を含むレコードが表示されます。 「Vanilla」のように Flavor 列の値が一致しない場合は、その値は一致した項目の後に表示されます。 Strawberry の後、Pistachio でソート済み。

手順

これらの例を実行するには、IceCream データ ソースをコレクション として作成します。

  1. ボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( アイスクリーム、 { フレーバー:"Chocolate"、数量:100、注文数:150 }、 { フレーバー: "Vanilla"、数量:200、注文数:20 }、 { フレーバー: "Strawberry"、数量:300、注文数:0 }、 { フレーバー: "Mint Chocolate"、数量:60、注文数:100 }、 { フレーバー: "Pistachio"、数量:200、注文数:10 } )
  2. アプリをプレビューし、ボタンを選択してから、Esc キーを押して既定のワークスペースに戻ります。
  3. ファイル メニューの コレクション を選択して、作成したコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。

Sort

  1. もう 1 つボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    上の計算式では、IceCream と同じデータを含む、SortByFlavor という名前の 2 つ目のコレクションを作成します。 ただし、新しいコレクションに含まれるデータは、Flavor 列でアルファベットの昇順に並べ替えられます。

  2. F5 キーを押して、新しいボタンを選択し、Esc キーを押します。

  3. ファイル メニューの コレクション を選択して両方のコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。

  4. 最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、 Sort 数式を、 Sortを使用するこのセクションの前の例の表とは異なる数式に置き換えます。

SortByColumns

  1. もう 1 つボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    上の計算式では、IceCream と同じデータを含む、SortByQuantity という名前の 3 つ目のコレクションを作成します。 ただし、新しいコレクションに含まれるデータは、Quanity 列で数値の昇順で並べ替えられてから、Flavor 列で降順で並べ替えられます。

  2. F5 キーを押して、新しいボタンを選択し、Esc キーを押します。

  3. ファイル メニューの コレクション を選択して 3 つのコレクションをすべて表示し、Esc キーを押して既定のワークスペースに戻ります。

  4. 最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、 SortByColumns 数式を、 SortByColumnsを使用するこのセクションの前の例の表とは異なる数式に置き換えます。