Power Automate 2つのテーブルやリストの差分を抽出する|SQLのExceptをデータ操作で実現する

Power Automateで2つのテーブルの差分をとりたいときがあったので、そのやり方をメモ。

スポンサーリンク

やりたいこと

例えばこんなSPOリストと、
こんなExcelがあるとき、
列「Mail」を比較して

  • Excelにだけあるデータ → SPOリストに新規追加
  • SPOリストにだけあるデータ → SPOリストから削除

みたいな処理をしたいとする。

そのときに「Apply To Each」を使ってそれぞれのテーブルを見比べていってもいいんだけど、データ量が多いときは処理時間がかかってしまうので「データ操作」アクションで実現してみる

事前準備:比較する列を配列化する

まずはデータ操作の「選択」アクションを使用して、
2つのテーブルの比較する列を配列にする
実行するとこんな感じ。

Excelにのみあるデータの抽出

まずはExcelにのみあるデータの抽出から。

データ操作の「アレイのフィルター」アクションを追加して、「差出人」にExcelのvalueを、左側に事前準備で作成した「SPOリストの配列」を入れて、
真ん中を「次の値を含まない」に変えて、右側に「式」タブから「item()[‘列名(今回はMail)’]」を手入力して「OK」を押す。
これを実行するとこんな感じの結果になって、Excelにだけあるデータ「わんさん」が抽出できる。

SPOリストにのみあるデータの抽出

続いてSPOリストにだけあるデータの抽出。

同じように「アレイのフィルター」アクションを追加して、「差出人」にSPOリストのvalueを、左側に事前準備で作成した「Excelの配列」を入れて、
真ん中を「次の値を含まない」に変えて、右側に「式」タブから「item()[‘列名(今回はMail)’]」を手入力して「OK」を押す。
実行してみるとこんな感じでSPOリストにだけある「きつねさん」が抽出できる。

「項目の作成」と「項目の削除」をApply To Eachで回す

あとは「項目の作成」や「項目の削除」アクションを追加し、「Apply To Eachアクション」とItems関数を組み合わせて各項目を設定して、
こんな感じのフローにしてあげれば完成!
このフローを実行すると今回は追加と削除が1回ずつ実行され、
無事きつねさんが削除されて、わんさんが追加される!

2つのテーブルの差分を求めるときにそれぞれApply To Eachで見比べてもいいけど、データ操作のアクションを使うと処理が早く終わるよって内容でした。

コメント

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