次の方法で共有


Sort および SortByColumns 関数

適用対象: キャンバス アプリ デスクトップ フロー モデル駆動型アプリ Power Pages 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 はローカルで作業するために少量のレコードのセットのみを引き出します。 フィルター関数と並べ替え関数は、削減されたセットのレコードで機能します。 ギャラリーで入手できるものは完全なストーリーでない場合があり、ユーザーの混乱を招くことがあります。

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

構文

並べ替え( , 数式 [, 並べ替え順序 ] )

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

SortByColumns( テーブル, 列名1 [, SortOrder1 , ColumnName2, SortOrder2, ... ])

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

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

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

    Note

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

SortByColumns( テーブル, 列名, SortOrderTable )

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

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

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

    Note

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

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

IceCream の例。

内容 結果
並べ替え(アイスクリーム、フレーバー)

SortByColumns( アイスクリーム、"フレーバー" )
IceCreamFlavor 列で並べ替えます。 Flavor 列に文字列が含まれているため、テーブルはアルファベット順に並べ替えられます。 既定では、並べ替え順序は昇順です。 アルファベット順に並べ替え済み。
並べ替え(アイスクリーム, 数量)

SortByColumns( アイスクリーム、"数量" )
IceCreamQuantity 列で並べ替えます。 Quantity 列に数値が含まれているため、テーブルは数値の順で並べ替えられます。 既定では、並べ替え順序は昇順です。 数値でソート済み。
並べ替え(アイスクリーム、数量、並べ替え順序.降順)

SortByColumns( IceCream, "数量", SortOrder.Descending )
IceCreamQuantity 列で並べ替えます。 Quantity 列に数値が含まれているため、数値の順で並べ替えられます。 並べ替え順序は、降順に指定されています。 数値で降順に並べ替え済み。
並べ替え(アイスクリーム、数量 + 注文時) IceCream を、各レコードの Quantity 列と OnOrder 列の合計で並べ替えます。 合計が数値であるため、テーブルは数値の順に並べ替えられます。 既定では、並べ替え順序は昇順です。 列のそのままの値ではなく、数式によって並べ替えるため、SortByColumns を使って同じことはできません。 数値で昇順に並べ替え済み。
並べ替え(並べ替え(アイスクリーム、OnOrder)、数量)

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

手順

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

  1. ボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( アイスクリーム、 { フレーバー:「チョコレート」、数量: 100、オンオーダー: 150 }、 { フレーバー:「バニラ」、数量: 200、オンオーダー: 20 }、 { フレーバー:「ストロベリー」、数量: 300、オンオーダー: 0 }、 { フレーバー:「ミントチョコレート」、数量: 60、オンオーダー: 100 }、 { フレーバー:「ピスタチオ」、数量: 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 の使用例の表にある別の式で置き換えます。