投稿日: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で大量データを扱うのはやめた方がいいですね。
最近のコメント