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

説明

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

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

現在処理中のレコードのフィールドを数式で利用できます。 その他の値と同じように、名前で参照するだけです。 アプリ全体から、コントロール プロパティとその他の値も参照できます。 詳細については、後述する例とレコード スコープの操作を参照してください。

まず 1 つの列で並べ替えてから、別の列で並べ替えるには、Sort 式を別の Sort 式に埋め込みます。 たとえば、次の数式を使用して最初に Contacts テーブルを 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 の順序で表示されます。 並べ替えテーブルに表示されないレコードは、リストの末尾に表示されます。

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

委任

可能であれば、PowerApps ではフィルターおよび並べ替え操作をデータ ソースに委任し、必要に応じて結果をページ送りします。 たとえば、データが入力されたギャラリー コントロールが表示されるアプリを起動すると、最初に先頭のレコード セットだけがデバイスに取り込まれます。 ユーザーがスクロールすると、データ ソースから追加のデータが取得されます。 その結果、アプリの起動が速くなり、非常に大規模なデータ セットにすばやくアクセスできます。

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

委任できない場合、PowerApps では、少数のレコード セットのみを取り込んで、ローカルで処理します。 フィルター関数と並べ替え関数は、削減されたレコード セットを操作します。 ギャラリーで使用できるデータが完全でないため、ユーザーが混乱する可能性があります。

詳細については、委任の概要に関する記事を参照してください。

構文

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 を含める必要があります。

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - 必須。 並べ替えるテーブル。
  • ColumnName(s) - 必須。 文字列として、並べ替える列名。
  • SortOrderTable - 必須。 並べ替えの対象となる、値を含んだ単一列テーブル。

以下の例では、次のテーブルにデータが含まれている 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", Ascending, "Quantity", Ascending )
IceCream を最初に OnOrder 列で並べ替えてから、次に Quantity 列で並べ替えます。 最初の並べ替えで OnOrder に基づいて "Pistachio" が "Vanilla" の上に移動し、次に Quantity に基づいて、共に適切な位置に移動します。
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) "Pistachio" と "Strawberry" を含んだ単一列テーブルに基づいて IceCreamFlavor 列で並べ替えます。 Flavor 列に "Pistachio" があるレコードが結果の先頭に表示され、次に "Strawberry" を含むレコードが表示されます。 "Vanilla" のように Flavor 列の値が一致しない場合は、その値は一致した項目の後に表示されます。

ステップ バイ ステップ

これらの例を実行するには、次のように 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 キーを押して既定のワークスペースに戻ります。

並べ替え

  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", Ascending, "Flavor", Descending ) )

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

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

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

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