Power Automate

Power Automateの処理が遅いので、データフローを作ってみた

投稿日:2025/6/6
投稿者:関


SQLServerの企業マスターをDataverseの取引先企業に日々データ連携するPower Automateを作ってました。
(処理はUPSERTイメージで、全件を対象にデータが有れば更新し、無ければ新規作成)

単体テストでは数件のテストを実施していて動作OKでした。
次に実際のデータで試してみようと思い、SQLServerにデータを追加しました。(10,000件)
Dataverseの取引先企業は0件で、テスト開始・・・

問題点1:データ取得制限

SQLServerから「行を取得する」を実行すると、2048件しか取得しなかった。

ん、なんだこれ・・・
色々調べると制限事項らしい

※回避方法は、こちら:「ページング機能を使用して取得件数を増やすことが推奨」

問題点2:処理時間が長い

処理が遅いなー

ん、2時間?たった2048件の処理で?
処理は、SQLSERVERの企業マスターを1件取得して、Dataverseの取引先企業にデータが存在するか確認して
追加 または 更新するだけなのに。

ページング機能で5回処理すると、10時間弱?
これでは、本番運用できないです。
(お客様に「企業マスターから、新規作成 または 更新だけのデータのビューにして下さい」とも、いまさら言えない・・・😭)

※Dataverseの取引先企業を10,000件で、再テスト開始・・・2時間半でした。
(オンプレミスデータゲートウエイの環境、SQLServerの性能により処理時間は異なります)

改善:データフロー作成

そうえば、他のお客様の売上実績取込(1日500件)処理は、データフローで構築していたことを思い出したので、
データフローで同じように作ってみました。

おー、たった2分?10,000件もあるのに!

今回は、データフローのインポート方法でマージを使いました。
このマージの場合、Dataverseのデータは全件更新日が更新されてしまいますので、
マスターのデータ連携時に更新された内容をメールで送信するような場合は困難です。
(監査ログから更新内容を取得することは可能だと思います)

※データフローのインポート方法

1.アペンドする(Append)

1)新しいデータを既存データに追加します。
2)主キー(キー列)を考慮せずにデータを挿入します。

2.マージ

1)新しいデータと既存データを比較し、一致する主キーがあれば更新し、一致しない場合は新規レコードを追加します。
2)主に「アップサート(Upsert: Update + Insert)」の動作に近いです。

まとめ

Power Automateで大量データを扱うのはやめた方がいいですね。

お問合せ

お問合せ
ご意見・ご相談、料金のお見積もり依頼など、お気軽にお問合わせください。お待ちしております。

今すぐ相談

コールセンターの無人化は可能か?Dynamics 365 Contact Centerとは?お役立ち情報トップへ戻る