Power Automateで配列の重複件数を一瞬で取得する方法

Power Automate
この記事は約4分で読めます。

今回使用するサンプルデータ

今回のサンプルデータは、以下のデータです。よく見ると、EMP003, EMP005 の2行のデータが重複している状態になっています。

[
  {"社員ID": "EMP001", "氏名": "山田太郎", "部署": "営業部", "出勤時刻": "09:00", "退勤時刻": "18:30"},
  {"社員ID": "EMP002", "氏名": "佐藤花子", "部署": "営業部", "出勤時刻": "08:45", "退勤時刻": "17:50"},
  {"社員ID": "EMP003", "氏名": "鈴木一郎", "部署": "営業部", "出勤時刻": "09:10", "退勤時刻": "19:00"},
  {"社員ID": "EMP004", "氏名": "田中美咲", "部署": "営業部", "出勤時刻": "08:55", "退勤時刻": "18:15"},
  {"社員ID": "EMP005", "氏名": "高橋健太", "部署": "営業部", "出勤時刻": "09:05", "退勤時刻": "18:45"},
  {"社員ID": "EMP003", "氏名": "鈴木一郎", "部署": "営業部", "出勤時刻": "09:10", "退勤時刻": "19:00"},
  {"社員ID": "EMP005", "氏名": "高橋健太", "部署": "営業部", "出勤時刻": "09:05", "退勤時刻": "18:45"},
  {"社員ID": "EMP101", "氏名": "伊藤翔太", "部署": "開発部", "出勤時刻": "10:00", "退勤時刻": "19:30"},
  {"社員ID": "EMP102", "氏名": "渡辺愛美", "部署": "開発部", "出勤時刻": "09:30", "退勤時刻": "18:20"},
  {"社員ID": "EMP103", "氏名": "中村拓海", "部署": "開発部", "出勤時刻": "10:15", "退勤時刻": "20:00"}
]

取得する3つの件数

今回の方法では、以下の3つの件数を取得していきます:

  1. データの全件数
  2. 重複削除後のデータ件数
  3. 重複した件数

この3つがわかれば、データの状態を正確に把握できますね。

実装方法を詳しく解説

1. データの全件数を取得する

まず、元のデータが全部で何件あるのかを確認します。データの件数はlength関数を使うことで取得することが可能です。

Composeアクション – 全件数:

length(outputs('作成'))

この場合、結果は 10件 となります。

2. 重複削除後の件数を取得する

続いて、重複を削除した後の件数を確認します。重複を削除するにはunion関数を利用します。

Composeアクション – 重複削除後の配列:

union(outputs('作成'),outputs('作成'))

union関数を使うことで、指定した2つの配列を結合し、その中で重複したデータをすべて削除してくれます。

通常は2つ以上の配列を結合して1つのデータにしたいときに利用しますが、今回のように単純に重複を削除する目的でも利用できるんです。

重複削除後の件数もlength関数で取得します:

Composeアクション – 重複削除後の件数:

length(union(outputs('作成'),outputs('作成')))

この場合、結果は 8件 となります。鈴木一郎さんと高橋健太さんの重複が削除されたわけですね。

3. 重複した件数を算出する

最後に、重複した件数を取得します。これは、データの全件数から重複削除後のデータの件数を引き算することで取得することが可能です。

引き算はsub関数を使って行います。

Composeアクション – 重複件数:

sub(length(outputs('作成')),length(union(outputs('作成'),outputs('作成'))))

最終的な式は以下の通りです。

{
  "データ件数": @{length(outputs('作成'))},
  "重複削除後の件数": @{length(union(outputs('作成'),outputs('作成')))},
  "重複件数": @{sub(length(outputs('作成')),length(union(outputs('作成'),outputs('作成'))))}
}

この式を分解すると、こういう計算になっています:

  • 全件数: 10件
  • 重複削除後: 8件
  • 重複件数: 10 – 8 = 2件

動作確認

フローを保存し、テストから動作を確認してみましょう。

実際に実行してみると、正しくそれぞれの件数が取得できていることが確認できます:

  • 全件数: 10件
  • 重複削除後: 8件
  • 重複件数: 2件

まとめ

いかがでしたでしょうか?

配列の重複件数を取得する方法のポイントは以下の3つです:

  • length関数: 配列の件数を取得
  • union関数: 重複を自動削除(空配列との結合がコツ)
  • sub関数: 引き算で重複件数を算出

Power Apps学習の決定版!コントロール別YouTube再生リスト完全ガイド

Power Appsを学習していて「どのコントロールをどう使えばいいのかわからない」「実際の使い方を動画で見ながら覚えたい」と思ったことはありませんか?

実践的な知識を効率よく身につけられるよう、現在公開している動画を整理したYouTube再生リスト集をご紹介します。

Power Apps 学習リソース一覧

コントロール・機能 リンク
ギャラリー 再生リスト
テキストラベル 再生リスト
テキスト入力 再生リスト
フォーム 再生リスト
ラジオ 再生リスト
スライダー 再生リスト
トグル 再生リスト
コンボボックス 再生リスト
ドロップダウン 再生リスト
ボタン 再生リスト
日付選択 再生リスト
画像 再生リスト
タイマー 再生リスト
コンポーネント 再生リスト
Copilot 再生リスト
クラシックコントロール 再生リスト
表示加工 再生リスト
バリデーション 再生リスト
ひと手間デザイン 再生リスト
ハンズオン 再生リスト
全体Tips 再生リスト
無料配布 再生リスト

コメント

タイトルとURLをコピーしました