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で見比べてもいいけど、データ操作のアクションを使うと処理が早く終わるよって内容でした。
コメント