概要
Azure Data Factory にて Salesforce をソースとした場合のデータ連携パターンを共有します。
基本的な方針
データ連携パターン
Azure Data Factory にて Salesforce をソースとする場合には、下記の方法があります。
- Salesforce コネクタ(Salesforce Bulk API 2.0)によるコピーアクティビティ
- REST API コネクタ(Salesforce REST API)によるコピーアクティビティ
Salesforce Bulk API 2.0 利用したパイプラインの利用方針
REST API コネクタ等にて Salesforce Bulk API 2.0 を利用することが、出力結果が CSV であることや Web アクティビティにより出力結果を直接書き込む場合に 4 MB が上限となることから連携パターンに含めていません。
Salesforce のドキュメントにて CSV 形式の出力結果であることが記述されています。
引用元:クエリジョブの結果の取得 | Bulk API 2.0 および Bulk API 開発者ガイド | Salesforce Developers
REST API により Storage に直接書き込むことも可能ですが、サイズ上限が 4 MB となるため実装が厳しいと判断しました。
引用元:Web アクティビティ - Azure Data Factory & Azure Synapse | Microsoft Learn
データ連携パターン
1. Salesforce コネクタ(Salesforce Bulk API 2.0)によるコピーアクティビティ
利用する Salesforce の API
Salesforce コネクタを利用する場合には Salesforce Bulk API 2.0 が利用されます。
Salesforce Bulk API 2.0 を使用して、データのクエリと取り込みを行います。
引用元:Salesforce との間でデータをコピーする - Azure Data Factory & Azure Synapse | Microsoft Learn
パイプライン
パイプラインの全体像
実行確認
パイプラインを実行
データの確認
2. REST API コネクタ(Salesforce REST API)によるコピーアクティビティ
利用する Salesforce の API
差分連携を実施することを目的として、削除済みのデータを取得する場合には QueryALL を利用し、削除済みデータが不要の場合には Query を利用します。
REST API 実行時には最大 2000 レコードを取得でき、それ以上のレコードを取得するためにはリターン値の一部であるnextRecordsUrl
を再帰的に実行する必要があります。
引用元:SOQL クエリを実行する | REST API 開発者ガイド | Salesforce Developers
QueryAll 要求が実行された場合、同期要求で一度に最大 2,000 個のレコードが返されます。
引用元:QueryAll | REST API 開発者ガイド | Salesforce Developers
SOQL クエリが実行された場合、同期要求で一度に最大 2,000 個のレコードが返されます。
引用元:Query | REST API 開発者ガイド | Salesforce Developers
パイプライン
パイプラインの全体像
コピーアクティビティにて改ページの規則の設定
コピーアクティビティの改ページの規則にて、AbsoluteUrl
に body
と['nextRecordsUrl']
を設定します。
コピーアクティビティにてマップの設定
CSV などの表形式へシンクする場合には、下記の記事を参考にマップの設定を実施します。