2021.01.25

Salesforceの外部IDを使用した他オブジェクトとの関連付け方法

  • このエントリーをはてなブックマークに追加
  • follow us in feedly
gettyimages (19247)

みなさまこんにちは! テラスカイの星野です。

Salesforceにデータを取り込む際に、他オブジェクトとの紐付けを行うケースが良くあると思います。
データ取り込み時に他オブジェクトとの紐付けを行う場合、外部IDを利用するととても便利ですよね。
今回は、外部IDを使用した他オブジェクトとの紐づけ方法についてまとめてみました。

外部IDを使用してのデータ取り込み

Salesforceでオブジェクト間の紐づけをするには「参照」や「主従」関係を構築し、子レコードに親レコードのリレーションを追加します。
親レコードのリレーションはSalesforceIDを指定することで紐づけできますが、SalesforceIDはレコード作成時に生成される値ですので、事前にどの様な値が設定されるか分かりません。
そのため、データ移行時など大量データをSalesforceに登録する場合にSalesforceIDを使用してオブジェクトの紐づけを行うと一手間かかります。

そこで外部IDを使用すると、事前にユーザが指定した決めた値を元に、データ取り込み時にSalesforceがオブジェクト間の紐づけを行ってくれます。

DataLoaderで外部IDを使ってみる

DataLoaderでUpsertを行う場合に、外部IDを使用しレコードの関連付けを行うことができます。

取引先に外部IDとして、カスタム項目「取引先番号」を追加した場合、DataLoaderでの関連付けは以下の手順で行います。

①インポートするファイルに親オブジェクトの外部IDの値を設定する。

②DataLoaderを起動し、upsertを選択。ウィザードに従い処理を進める。

③DataLoaderの「Choose your related object」の画面で外部IDの項目を指定する。

④DataLoaderの「Mapping Dialog」でCSV項目と外部ID項目を紐づける。

⑤ウィザードに従い、後続処理で取り込みを行う。

外部IDを使用しDataloaderでデータのアップロードが行えると、SalesforceIDを意識せずリレーションが構築できますので、エクスポートしたデータを他Sandbox環境へ移行する場合はとても便利です。

Apexで外部IDを使ってみる

Dataloaderで外部IDによる紐づけができますので、Apexでもできるだろうと思ってやってみると、やはり簡単に実現できました。
//カスタムオブジェクトに取引先の参照を外部IDで設定
//取引先の外部ID:AccountNo__c
Samlpe__c samp = new Samlpe__c();
samp.Account__r = new Account(AccountNo__c =  '1') ;
Sample
Apexバッチで一括処理する場合に便利そうです。

DataSpider Cloudで外部IDを使ってみる

DataSpider Cloudでも外部IDを使用することができます。

Salesforceにデータを書き込む場合は、ツールパレットから「データ書き込み」を選び設定します。
必須項目の下段に「リレーションシップ項目定義」がありますので、外部IDに設定する値を指定します。

CSVファイルをSalesforceに取り込む必要があり、ファイルを編集する必要がある場合は、DataSpider Cloudを使用しデータ取り込みを行うと便利です。

外部IDによる関連付けができない項目

便利な外部IDによるオブジェクトの紐づけですが、全ての項目には対応していません。
活動の関連先(WhoId)、名前(WhatId)、カスタムオブジェクトの所有者項目等の多態的な項目では外部IDによる関連付けができないため注意が必要です。

終わりに

以上のように外部IDの使い方をまとめてみました。

Salesforceにデータを取り込む場合は、外部IDを使用すると便利です。
データ移行等、データ取り込みが必要な場合は、環境や用途によって使用方法を検討し実装するとデータ取り込みの簡素化が図れると思います。
24 件
     
  • banner
  • banner

関連する記事