PowerAppsのDistinct関数でデータの重複対策!他の排除方法も解説

アプリを作成していると、リストやデータテーブルに重複した値が含まれてしまい、ユーザーの利便性が下がることがあります。

例えば、ドロップダウンリストに同じ選択肢が何度も表示されると、使いづらいですよね。

PowerAppsでデータの重複を排除したいけど、どうすればいいの…?

そんな悩みを抱えていませんか?

そんなときに役立つのがDistinct関数です。

この関数を活用すれば、指定したデータの中から一意の値だけを抽出でき、重複のないデータセットを作成できます。さらに、GroupBy関数やマスタデータを活用することで、より効率的に重複を排除することも可能です。

この記事では、Distinct関数の基本構文や具体的な使用例、さらには代替手段について詳しく解説します。

PowerAppsでのデータ管理をもっとスマートにしたい方は、ぜひ最後までチェックしてみてください!

PowerAppsをもっと効率的に学びたいと考えている方には、Udemyのオンライン講座がおすすめです。
初心者向けのコースが充実しており、動画で実践的に学べるため、独学よりもスムーズにスキルを習得できます。
特に、PowerAppsの基本操作や関数の使い方を体系的に学びたい方に最適です。

この記事を書いた人
  • 一部上場企業に勤める会社員
  • ITエンジニア未経験
  • 2024年7月から社内DX担当に異動
  • 同時期にPowerPlatformを始める
  • 効率的に学ぶためにブログスタート
ちょびです!

PowerAppsのDistinct関数とは

PowerAppsのDistinct関数は、テーブル内の各レコードに対して指定した数式を評価し、重複する値を除外した1列のテーブルを返します。

この関数を使用することで、データ内の重複を排除し、一意の値のみを抽出できます。

基本構文

Distinct関数の基本的な構文は以下のとおりです。

Distinct(テーブル, 数式)
  • テーブル: 評価対象のテーブルを指定します。
  • 数式: 各レコードに対して評価する数式を指定します。

この関数は、指定した数式を各レコードに適用し、重複する結果を除外した一意の値のテーブルを返します。

一意の列名を取り出せる

Distinct関数を使用すると、テーブル内の特定の列から重複を除いた一意の値を取得できます。例えば、以下のようなテーブルがあるとします。

名前部署
山田営業
佐藤開発
鈴木営業
高橋人事
田中開発

このテーブルから「部署」列の一意の値を取得するには、次のようにDistinct関数を使用します。

Distinct(テーブル名, 部署)

この関数は、「営業」、「開発」、「人事」の3つの一意な値を返します。

数式を使って条件で取り出す

Distinct関数では、数式を使用して特定の条件に基づいて一意の値を抽出することも可能です。例えば、以下のようなテーブルがあるとします。

商品面カテゴリ価格
商品A家電1000
商品B家電1500
商品C文房具500
商品D家電1000
商品E文房具700

このテーブルから「カテゴリ」と「価格」を組み合わせた一意の値を取得するには、次のようにDistinct関数を使用します。

Distinct(テーブル名, カテゴリ & " " & Text(価格))

この関数は、「家電 1000」、「家電 1500」、「文房具 500」、「文房具 700」の4つの一意な値を返します。

このように、Distinct関数を活用することで、テーブル内のデータから重複を排除し、一意の値を抽出することが可能です。

PowerAppsでのDistinct関数の使用例

PowerAppsにおけるDistinct関数の活用方法として、以下の2つの例があります。

  • ドロップダウンリストで活用する
  • 複数列を組み合わせて重複を排除する

ドロップダウンリストで活用する

ドロップダウンリストに表示する選択肢から重複を排除する際に、Distinct関数が有効です。

例えば、商品リストからカテゴリを選択するドロップダウンを作成する場合、重複するカテゴリ名を除外して表示できます。

STEP
ドロップダウンコントロールを追加する

ドロップダウンのItemsプロパティに、以下のようにDistinct関数を設定します。

Distinct(商品リスト, カテゴリ).Value
STEP
ドロップダウンで商品リストの内容を選択する

ここで、商品リストはデータソースの名前、カテゴリは列名を指します。

この設定により、ドロップダウンには重複のないカテゴリ名が表示されます。

複数列を組み合わせて重複を排除する

複数の列を組み合わせて一意の値を抽出する際にも、Distinct関数を活用できます。

例えば、商品リストから「カテゴリ」と「サブカテゴリ」の組み合わせでb

STEP
AddColumns関数で結合した新しい列を作成する

AddColumns関数を使用して、カテゴリとサブカテゴリを結合した新しい列を作成します。

AddColumns(商品リスト, "カテゴリサブカテゴリ", カテゴリ & "-" & サブカテゴリ)
STEP
Distinct関数を適用する

上記で作成した新しい列に対して、Distinct関数を適用して重複を排除します。

Distinct(上記の結果, カテゴリサブカテゴリ)

この方法により、カテゴリとサブカテゴリの組み合わせで一意のリストを取得できます。

これらの方法を活用すればPowerApps内で効率的に重複を排除し、ユーザーにとって使いやすいインターフェースを構築できます。

PowerAppsでDistinct関数の代わりになる手段

PowerAppsでは、データの重複を排除するためにDistinct関数が一般的に使用されますが、他の方法でも同様の結果を得ることが可能です。

以下に、GroupBy関数とCountRows関数の組み合わせ、およびマスタデータの活用による重複排除の方法を紹介します。

GroupBy関数とCountRows関数を組み合わせる

GroupBy関数は、指定した列の値に基づいてレコードをグループ化し、新しいテーブルを作成します。

これにCountRows関数を組み合わせることで、各グループ内のレコード数をカウントし、特定の条件に合致するレコードを抽出できます。

STEP
GroupBy関数でデータをグループ化する

重複を確認したい列を基にデータをグループ化します。

GroupBy(テーブル名, "列名", "グループ化されたデータ")
STEP
AddColumns関数とCountRows関数で各グループのレコード数を追加する

各グループ内のレコード数を新しい列として追加します。

AddColumns(グループ化されたデータ, "レコード数", CountRows(グループ化されたデータ))
STEP
Filter関数でレコード数が1以上のグループを抽出する

レコード数が1以上のグループをフィルタリングします。

Filter(グループ化されたデータ, レコード数 >= 1)

これで指定した列の値に基づいて、重複を排除したデータを取得できます。

マスタデータの活用して重複を排除する

マスタデータを活用することで、データの一貫性と重複排除を効率的に行えます。

マスタデータとは

組織内で共有される基本的なデータセット(SharePointなど)のことで、これを参照することでデータの重複や不整合を防ぐことが可能です。

ちなみに、実際に業務で使うデータのことをトランザクションデータといいます。

STEP
マスタデータの作成

重複を排除したい項目について、一意の値のみを持つマスタデータを作成します。

STEP
データソース間のリレーションシップを設定する

マスタデータとトランザクションデータとの間にリレーションシップを設定し、マスタデータを参照する形にします。

STEP
ドロップダウンリストや選択肢にマスタデータを使用する

ユーザーが入力や選択を行う際に、マスタデータを参照することで、重複や入力ミスを防ぎます。


上記の方法を使えばデータ入力時の重複を未然に防ぎつつ、データの整合性を保てます。

PowerAppsのDistinct関数に関する質問

PowerAppsでデータの重複を排除する際に便利なDistinct関数ですが、利用する上での注意点や疑問点も多くあります。

ここでは、Distinct関数を使用する際のデメリットや戻り値の列名について詳しく解説します。

Distinct関数の利用にデメリットはある?

Distinct関数を利用する際のデメリットとして、以下の3点が挙げられます。

委任の制限

Distinct関数は委任(Delegation)ができないため、大量のデータを扱う際にすべてのデータを取得できず、一部のデータのみが処理される可能性があります。

特にSharePointやDataverseなどの外部データソースを使用している場合、この制限により期待通りの動作をしないケースがあります。

パフォーマンスへの影響

データの重複をアプリ側で処理するため、データ量が増えるとアプリの動作が遅くなる可能性があります。

特に、数千件以上のデータを扱う場合は、別の方法(GroupBy関数の活用など)を検討するのが望ましいです。

戻り値の列名の変更

2023年3月にあったPowerAppsの更新により、Distinct関数の戻り値の列名が「Result」から「Value」に変更されました。

この変更により、過去に作成したアプリの互換性が損なわれる可能性があるので確認してみてください。

PowerAppsは頻繁に更新があるので、開発時にはこのような最新の仕様を確認することがとても重要です。

Distinct関数の戻り値のテーブルの列名は?

Distinct関数の戻り値は、1列のみを持つテーブルで、デフォルトの列名は「Value」となっています。

例えば、以下のようなテーブルから「カテゴリ」列の一意の値を取得する場合を考えます。

商品名カテゴリ
商品A家電
商品B家電
商品C文房具
商品D家電
商品E文房具

このデータに対して、以下の式を適用すると、

Distinct(商品リスト, カテゴリ)

PowerAppsは次のような1列のテーブルを返します。

Value
家電
文房具

この「Value」列が、Distinct関数のデフォルトの戻り値の列名になります。

開発時にこの仕様を理解しておくと、適切なデータ操作ができます。

Distinct関数を活用して効率的なデータ管理を始めよう

PowerAppsのDistinct関数は、データの重複を排除し、一意の値を取得するのに便利な機能です。

ドロップダウンリストの最適化や、複数列の組み合わせにも活用できます。

ただし、委任の制限やパフォーマンスの影響も考慮し、GroupBy関数やマスタデータの活用と併用することが重要です。

Distinct関数を適切に使い、より効率的なデータ管理を実現しましょう。

PowerAppsはUdemyで学べる!

Udemy
学習スタイルオンライン講座
・動画
・スライド
運営会社株式会社ベネッセコーポレーション
期間購入した講座は無期限で視聴可能
料金1,500円〜29,000円(税込)
サポート年間通してセール多数開催
購入前に無料視聴可能
30日間返金保証 など

Udemyは、オンラインで幅広い分野のスキルを手軽に学べる、世界最大級のオンライン学習プラットフォームです。

PowerAppsだけでなく、PowerAutomateを含むPowerPlatform系以外にも以下のような講座があります。

Udemyで学べるジャンル
  • ビジネス
  • プログラミング
  • デザイン
  • 語学
  • 趣味 など

20万以上のコースから、動画講座で自分のペースで学習できます。

Udemyは不定期ですが頻繁にセールを開催します。
95%以上割引かれて1,500円で購入できる講座もありますよ!

最大95%OFFのセールをチェック! /

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!