Sort および SortByColumns 関数

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

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

注意

PAC CLI pac power-fx コマンド は、SortByColumns 機能に対応していません。

Description

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

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

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

まず 1 つの列で並べ替えてから、別の列で並べ替えるには、Sort 式を別の Sort 式に埋め込みます。 たとえば、次の計算式を使用して最初に Contacts テーブルを LastName 列で並べ替えてから、FirstName 列で並べ替えることができます: Sort( Sort( Contacts, LastName ), FirstName )

SortByColumns 関数は、1 つまたは複数の列に基づいてテーブルを並べ替える場合にも使用できます。

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

SortByColumnsDrop down コントロールまたはList box コントロールを組み合わせると、並べ替える列を選択できます。

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

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

委任

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

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

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

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

構文

Sort( Table, Formula [, SortOrder ] )

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

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

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

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

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

    Note

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

SortByColumns( Table, ColumnName, SortOrderTable )

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

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

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

    Note

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

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

IceCream の例。

内容 結果
Sort( IceCream, Flavor )

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

SortByColumns( IceCream, "Flavor" )
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( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 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 の使用例の表にある別の式で置き換えます。