Power Apps での GroupBy および Ungroup 関数
テーブル のレコード のグループ化とグループ化解除を行います。
内容
GroupBy 関数は、1 つ以上の列 の値に基づいてレコードを一緒にグループ化したテーブルを返します。 同じグループのレコードは単一のレコードに配置され、残りの列の入れ子になったテーブルを保持する列が追加されます。
Ungroup 関数は、GroupBy プロセスを逆にします。 この関数は、一緒にグループ化されていたレコードをそれぞれのレコードに分割してテーブルを返します。
GroupBy を使用してレコードをグループ化し、返されたテーブルを変更し、次に Ungroup を使用して変更されたテーブルのレコードのグループ化を解除することができます。 たとえば、次の方法でレコードのグループを削除できます。
- GroupBy 関数を使用します。
- Filter 関数を使用して、レコードのグループ全体を削除します。
- Ungroup 関数を使用します。
グループ化に基づいて結果を集計することもできます。
- GroupBy 関数を使用します。
- Sum、Average、およびその他の集計関数とともに AddColumns 関数を使用して、グループ テーブルの集計である新しい列を追加します。
- DropColumns 関数を使用してグループ テーブルをドロップします。
Ungroup は、GroupBy に供給されたレコードの元の順序を維持しようとします。 これは常にできるとは限りません (たとえば、元のテーブルに 空白 レコードが含まれている場合です)。
テーブルは、文字列や数値と同じように、Power Apps の値です。 関数の引数としてテーブルを指定し、関数はテーブルを返すことができます。 GroupBy および Ungroup はテーブルを変更せず、代わりに、テーブルを引数として受け取り、別のテーブルを返します。 詳細については、テーブルの使用 に関するページを参照してください。
構文
GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )
Table - 必須。 グループ化するテーブル。
ColumnName(s) - 必須。 レコードをグループ化する テーブル 内の列名。 これらの列は、結果のテーブルの列になります。
GroupColumnName - 必須。 ColumnName(s) にないレコード データの記憶域の列名。
注意
名前にスペースが使われている SharePoint と Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。 たとえば、"Column Name" を "Column_x0020_Name" として指定します。
Ungroup( Table, GroupColumnName )
Table - 必須。 グループ化を解除するテーブル。
GroupColumnName - 必須。 GroupBy 関数を用いたレコード データの設定を含む列。
注意
名前にスペースが使われている SharePoint と Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。 たとえば、"Column Name" を "Column_x0020_Name" として指定します。
例
コレクションの作成
ClearCollect( CityPopulations,
{ City: "London", Country: "United Kingdom", Population: 8615000},
{ City: "Berlin", Country: "Germany", Population: 3562000},
{ City: "Madrid", Country: "Spain", Population: 3165000},
{ City: "Rome", Country: "Italy", Population: 2874000},
{ City: "Paris", Country: "France", Population: 2273000},
{ City: "Hamburg", Country: "Germany", Population: 1760000},
{ City: "Barcelona", Country: "Spain", Population: 1602000},
{ City: "Munich", Country: "Germany", Population: 1494000},
{ City: "Milan", Country: "Italy", Population: 1344000}
)
Alt キーを押しながら、オリジナル ボタンを選択します。
次のデータが含まれた CityPopulations という名前のコレクション が作成されました。
のデータが含まれた CityPopulations という名前の コレクション が作成されましたこのコレクションを表示するには、ファイル メニューの コレクション を選択し、次に CityPopulations コレクションを選択します。 コレクション内の最初の 5 つのレコードが表示されます。

レコードのグループ化
他のボタンを追加し、その Text プロパティを "グループ" に設定します。
このボタンの OnSelect プロパティを次の数式に設定します。
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
Alt キーを押しながら、グループ ボタンを選択します。
前のコレクションのレコードが、国 列によってグループ化されている CitiesByCountry という名前のコレクションが作成されました。

このコレクションに含まれている最初の 5 つのレコードを表示するには、ファイル メニューの コレクション を選択します。

国の市区町村の人口を表示するには、その国 (例: ドイツ) の 市区町村 列内のテーブル アイコンを選択します。

レコードのフィルターおよびグループ化解除
他のボタンを追加し、その Text プロパティを設定し、ボタンが "フィルター" と表示されるようにします。
このボタンの OnSelect プロパティを次の数式に設定します。
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )
Alt キーを押しながら、追加したボタンを選択します。
名前に "e" を持つ (つまり、スペインまたはイタリアではない) これらの国のみを含む、CitiesByCountryFiltered という名前の 3 つ目のコレクションが作成されました。

もう 1 つボタンを追加し、その Text プロパティを設定し、ボタンが "グループ化の解除" と表示されるようにします。
このボタンの OnSelect プロパティを次の数式に設定します。
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, "Cities" ) )
結果は次のようになります。

結果の集計
このほか、グループ化したテーブルでは結果を集計することができます。 この例では、各国の主な市区町村の人口を合計します。
他のボタンを追加し、その Text プロパティを設定し、"合計" と表示されるようにします。
"合計" ボタンの OnSelect プロパティを次の数式に設定します。
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, "Sum of City Populations", Sum( Cities, Population ) ) )
結果は次のようになります。

AddColumns では、ベースである CitiesByCountry コレクションで始まり、新しい列である 市区町村人口の合計 が追加されます。 この列の値では、数式 Sum( Cities, Population ) に基づいて、行単位で計算されます。 AddColumns は、各行に 市区町村 列 (テーブル) の値を提供し、Sum は、このサブ テーブルの各行に 人口 を追加します。
これで、必要な合計が得られたので、DropColumns を使用してサブ テーブルを削除できます。
他のボタンを追加し、"SumOnly" と表示されるように、その Text プロパティを設定します。
"SumOnly" ボタンの OnSelect プロパティを次の数式に設定します。
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, "Cities" ) )
結果は次のようになります。

このテーブルのグループ化を解除する必要がなかったことに注意してください。
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。
フィードバック
フィードバックの送信と表示