🎯

PowerAppsでテーブル内の重複した値のみを抜き出す方法

2023/02/19に公開

概要

PowerAppsにて、特定のテーブルから重複したデータを取り除いたテーブルを出力するのは、"Distinct関数"を使用することで簡単に実装できます。
一方で、テーブル内で重複のあるデータのみを抜き出すための関数は用意されていません。
本記事では、そのやり方について解説します。

やり方

重複しているデータを抜き出すには以下の手順で行います。
① GroupBy関数で重複データをまとめる
② グループ化されたそれぞれのレコードで該当するデータ数をカウントする(
③ Filter関数でカウントされた値が2以上のレコードを表示する。

具体例

まず、テーブル(コレクション)を準備します。

ClearCollect(
	社員コレクション,
	{名前:"社員",出身:"東京"},
	{名前:"社員B",出身:"大阪"},
	{名前:"社員C",出身:"北海道"},
	{名前:"社員D",出身:"沖縄"},
	{名前:"社員E",出身:"東京"},
	{名前:"社員F",出身:"大阪"},
	{名前:"社員G",出身:"埼玉"}
)

このコレクションに対して以下の関数を適応することで、重複データのみを抜き出せます。

Filter(
	AddColumns(
		GroupBy(社員コレクション,"出身","peoples"),
		"count",
		CountRows(peoples)
	),
	count >= 2
)

解説

GroupeBy関数

GroupBy関数では、指定した列の値を元に他の列をグループ化することができます。
今回の例では、社員コレクションの”出身”列の値を元にグループ化し、新たに作られたpeoples列に"出身"列以外の項目がテーブルとして格納されます。

GroupBy(社員コレクション,"出身","peoples")

AddColumns関数,CountRows関数

AddColumns関数は列を一列追加し、追加した列に指定した値を格納します。
今回の例では、"count"列を追加してその列にCountRow関数で"peoples"列のレコード数をカウントした値を格納しています。

AddColumns(
	{対象テーブル},
	"count",
	CountRows(peoples)
	)

Filter関数

Filter関数により条件を指定してテーブルを出力します。
今回の例では、"count"列の値が2以上のレコードのみを表示しています。

Filter(
	{対象テーブル},
	count >= 2
)

これにより、重複しているデータのみが表示されるようになります。
以上

Discussion