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" ) となります。
SortByColumns とDrop down コントロールまたはList box コントロールを組み合わせると、並べ替える列を選択できます。
SortByColumns では、昇順または降順で並べ替えるだけでなく、値を含んだ単一列テーブルに基づいて並べ替えることができます。 たとえば、["Monday","Tuesday"、"Wednesday"、"Thursday"、"Friday"、"Saturday"、"Sunday"] を並べ替え順序として指定すると、曜日の名前に基づいてレコードを並べ替えることができます。 Monday" が含まれるレコードが先頭に表示され、続いて Tuesday の順序で表示されます。 並べ替えテーブルに表示されないレコードは、リストの末尾に表示されます。
テーブルは、文字列や数値と同じように、 内の値です Power Apps。 関数に渡して、関数から返すことができます。 Sort と SortByColumn はテーブルを変更しません。代わりに、テーブルを引数として受け取り、並べ替えられた新しいテーブルを返します。 詳細については、テーブルの使用 に関するページを参照してください。
委任
可能な場合、Power Apps はオンデマンドの結果を通じてフィルター操作と並べ替え操作をデータ ソースやページに委任します。 たとえば、データが入力されたギャラリー コントロールを表示するアプリを起動すると、最初はレコードの最初のセットのみがデバイスに表示されます。 ユーザーがスクロールすると、追加のデータがデータ ソースから引き出されます。 その結果、アプリの起動が高速になり、大規模なデータ セットにアクセスできます。
ただし、常に委任できるとは限りません。 データ ソースによって、委任がサポートされる関数や演算子が異なります。 数式を完全には委任できない場合、作成環境は委任できない部分を警告でフラグします。 可能であれば、委任できない関数や演算子を使用しないよう、数式を変更することを検討してください。 委任一覧は、委任できるデータ ソースや操作の詳細を示します。
委任できない場合、Power Apps はローカルで作業するために少量のレコードのセットのみを引き出します。 フィルター関数と並べ替え関数は、削減されたセットのレコードで機能します。 ギャラリーで入手できるものは完全なストーリーでない場合があり、ユーザーの混乱を招くことがあります。
詳しくは、「委任の概要」を参照してください。
構文
並べ替え( 表, 数式 [, 並べ替え順序 ] )
- 表 - 必須。 並べ替えるテーブル。
- 式 - 必須。 この数式は、それぞれのテーブルのレコードに対して評価され、結果はテーブルの並べ替えに使用されます。 テーブル内の列を参照することができます。
- SortOrder - オプション。 SortOrder.Descending を指定して、降順でテーブルを並べ替えます。 SortOrder.Ascending がデフォルト値です。
SortByColumns( テーブル, 列名1 [, SortOrder1 , ColumnName2, SortOrder2, ... ])
表 - 必須。 並べ替えるテーブル。
ColumnNames - 必須。 文字列として、並べ替える列名。
SortOrders - オプション。 SortOrder.Ascending または SortOrder.Descending。 SortOrder.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データソース を使用します:
式 | 内容 | 結果 |
---|---|---|
並べ替え(アイスクリーム、フレーバー) SortByColumns( アイスクリーム、"フレーバー" ) |
IceCream を Flavor 列で並べ替えます。 Flavor 列に文字列が含まれているため、テーブルはアルファベット順に並べ替えられます。 既定では、並べ替え順序は昇順です。 | |
並べ替え(アイスクリーム, 数量) SortByColumns( アイスクリーム、"数量" ) |
IceCream を Quantity 列で並べ替えます。 Quantity 列に数値が含まれているため、テーブルは数値の順で並べ替えられます。 既定では、並べ替え順序は昇順です。 | |
並べ替え(アイスクリーム、数量、並べ替え順序.降順) SortByColumns( IceCream, "数量", SortOrder.Descending ) |
IceCream を Quantity 列で並べ替えます。 Quantity 列に数値が含まれているため、数値の順で並べ替えられます。 並べ替え順序は、降順に指定されています。 | |
並べ替え(アイスクリーム、数量 + 注文時) | IceCream を、各レコードの Quantity 列と OnOrder 列の合計で並べ替えます。 合計が数値であるため、テーブルは数値の順に並べ替えられます。 既定では、並べ替え順序は昇順です。 列のそのままの値ではなく、数式によって並べ替えるため、SortByColumns を使って同じことはできません。 | |
並べ替え(並べ替え(アイスクリーム、OnOrder)、数量) SortByColumns( IceCream、"OnOrder"、SortOrder.Ascending、"Quantity"、SortOrder.Ascending ) |
まず IceCream を OnOrder 列で並べ替えてから、次に Quantity 列で並べ替えます。 最初の並べ替えで OnOrder に基づいて「Pistachio」が「Vanilla」の上に移動し、次に Quantity に基づいて、共に適切な位置に移動します。 | |
SortByColumns( アイスクリーム、"フレーバー"、[ "ピスタチオ"、"ストロベリー" ] ) | 「Pistachio」と「Strawberry」を含んだ単一列テーブルに基づいて IceCream を Flavor 列で並べ替えます。 Flavor 列に「Pistachio」があるレコードが結果の先頭に表示され、次に「Strawberry」を含むレコードが表示されます。 「Vanilla」のように Flavor 列の値が一致しない場合は、その値は一致した項目の後に表示されます。 |
手順
これらの例を実行するには、IceCream データ ソースをコレクション として作成します。
- ボタンを追加し、OnSelect プロパティを次の計算式に設定します。
ClearCollect( アイスクリーム、 { フレーバー:「チョコレート」、数量: 100、オンオーダー: 150 }、 { フレーバー:「バニラ」、数量: 200、オンオーダー: 20 }、 { フレーバー:「ストロベリー」、数量: 300、オンオーダー: 0 }、 { フレーバー:「ミントチョコレート」、数量: 60、オンオーダー: 100 }、 { フレーバー:「ピスタチオ」、数量: 200、オンオーダー: 10 } ) - アプリをプレビューし、ボタンを選択してから、Esc キーを押して既定のワークスペースに戻ります。
- ファイル メニューの コレクション を選択して、作成したコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。
Sort
もう 1 つボタンを追加し、OnSelect プロパティを次の計算式に設定します。
ClearCollect(SortByFlavor、Sort(IceCream、Flavor))上の計算式では、IceCream と同じデータを含む、SortByFlavor という名前の 2 つ目のコレクションを作成します。 ただし、新しいコレクションに含まれるデータは、Flavor 列でアルファベットの昇順に並べ替えられます。
F5 キーを押して、新しいボタンを選択し、Esc キーを押します。
ファイル メニューの コレクション を選択して両方のコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。
最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、Sort 式を、前にこのセクションで示した Sort の使用例の表にある別の式で置き換えます。
SortByColumns
もう 1 つボタンを追加し、OnSelect プロパティを次の計算式に設定します。
ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )上の計算式では、IceCream と同じデータを含む、SortByQuantity という名前の 3 つ目のコレクションを作成します。 ただし、新しいコレクションに含まれるデータは、Quanity 列で数値の昇順で並べ替えられてから、Flavor 列で降順で並べ替えられます。
F5 キーを押して、新しいボタンを選択し、Esc キーを押します。
ファイル メニューの コレクション を選択して 3 つのコレクションをすべて表示し、Esc キーを押して既定のワークスペースに戻ります。
最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、SortByColumns 式を、前にこのセクションで示した SortByColumns の使用例の表にある別の式で置き換えます。