概要
Azure Data Factory にて階層構造をソースとしたコピーアクティビティ実施時の表形式へのシンク方法を紹介します。 Saleforce REST API により Salesforce から CSV などの表形式のシンク先へデータ連携する際に本手順が必要となります。
Salesforce REST API にて SOQL (Salesforce Object Query Language)によりデータを取得する場合には下記のような json がリターンされます。records
というオブジェクトにて取得したいレコードが格納されており、配列の階層構造となっております。
{ "done" : true, "totalSize" : 14, "records" : [ { "attributes" : { "type" : "Account", "url" : "/services/data/v60.0/sobjects/Account/001D000000IRFmaIAH" }, "Name" : "Test 1" }, { "attributes" : { "type" : "Account", "url" : "/services/data/v60.0/sobjects/Account/001D000000IomazIAB" }, "Name" : "Test 2" }, ... ] }
引用元:SOQL クエリを実行する | REST API 開発者ガイド | Salesforce Developers
上記のようなデータをマップの設定をせずにデータ連携すると、下記のように配列の列(records
)が省略されてしまいます。
表形式でシンクする際には、Azure Data factory のドキュメントにて階層構造のソースから表形式のシンクへ
の項にて紹介されているコレクション参照
の設定を実施する必要があります。本記事では、コレクション参照
を設定して Salesforce のデータを適切に取得する方法を紹介します。
引用元:コピー アクティビティでのスキーマとデータ型のマッピング - Azure Data Factory & Azure Synapse | Microsoft Learn
本記事では CSV などの表形式として連携する場合の設定手順を紹介しておりますが、 json 形式として書き込むことが許容できる場合には REST API の出力結果をそのまま保持させることがおすすめです。 json 形式で出力し、そのファイルを Spark などで処理することの方が開発生産性や保守性が向上することを期待できます。
事前準備
下記の作業を実施ます。
- Salesforce にて接続アプリを作成
- Azure Data Factory にて salesforce のリンクサービスを作成
- Azure Data Factory にて Salesforce REST API をソースとしてコピーアクティビティをもつパイプラインを作成