2022/05/31

Salesforceの外部IDによるデータローダの参照関係更新、使い方をご紹介

 
  

Salesforceの外部IDとは?

Salesforceにおける外部IDとは、外部システムの一意のレコード識別子を含む、カスタム項目です。データロード時の名前解決や外部システムのID参照に使用できます。 以下の項目を設定できます。 ・自動採番項目 ・メール項目 ・数値項目 ・テキスト項目  25 項目まで

外部IDの活用例、メリット

外部ID項目はSalesforce内で検索できるため、外部IDをキーとして使用できます。これにより、さまざまな問題が解決可能です。外部IDの活用によって、実現できることをご紹介します。

データインポートの重複防止

データインポートウィザードを実行する際、Salesforce内に登録されている、インポートファイルのデータと同一の外部IDの値をもつレコードを検出します。これにより、重複したレコードが作成されるのを防止できます。

外部IDの活用例:データロード時の名前解決

Salesforceでは、オブジェクトIDを参照してレコードを取得可能です。しかし、組織ごとに割り振られるオブジェクトIDの性質上、組織間で共有する情報については、組織ごとのマスタが必要になってしまいます。この問題を、外部IDの活用で解決できます。

オブジェクトIDは組織をまたいで参照できない

Salesforceでは、全てのオブジェクトに対して、オブジェクトIDという15桁もしくは18桁の文字列が割り当てられます。オブジェクトIDは、オブジェクトが生成された時に採番されるユニークなIDで、オブジェクトの新規作成やデータをロードした際に割り振られます。 オブジェクトIDを任意で指定することはできず、割り振られないとわかりません。 例えば、取引先責任者などの複数の組織で共通するデータを保持する項目でも、それぞれの組織で、ユニークなオブジェクトIDを持つことになります。参照項目がある場合は、各組織のオブジェクトIDが反映されます。 そのため、複数の組織をまたいで、オブジェクトIDによる参照を行うことはできません。

一旦エクスポートして再ロードでは手間がかかる

これを解決するためには、オブジェクトIDが振られた後に一旦データをエクスポートし、参照項目にオブジェクトIDを埋め込んで、再度ロードするという手順が必要になります。

外部IDの活用で解決できる!

外部IDの活用によって、この問題を解決することができます。マスタのIDとして外部IDを定義することで、データロード時にオブジェクトIDの名前解決が可能です。 ロード時の参照先に外部IDを指定しておくと、データがロードされた際に参照されます。外部IDを設定しないと使用できません。これによって、組織に依存しないマスタ管理を実現できます。

外部IDの活用例:Upsertのキーとして使用

データローダを実行する際、外部IDをUpsert(更新/挿入)のキーとして指定可能です。以下の通り、外部IDを使用して、新規レコード作成、既存レコード更新のいずれかを判別します。 ・外部IDが一致しない → 新規レコードを作成する ・外部IDが一度だけ一致した → 既存レコードを更新する ・外部IDが複数回一致した → エラー 作成も更新もなし この方法でデータインポートする手順について、次項で詳しくご説明します。

外部ID項目を使ったデータインポートの手順

外部ID項目を使用して、データローダを使用してデータをインポートする手順をご説明します。ここでは、「取引先」に「取引先責任者」の情報を追加するという作業を例として用います。

事前準備

データローダを使用してデータをインポートするために、必要となる事前準備をご説明します。データローダは、Salesforceレコードを一括処理できるクライアントアプリケーションです。データローダでは、以下の操作を行えます。 ・インポート(挿入、更新、削除) ・エクスポート CSV ファイル

①データローダを準備できていない場合

Salesforceの設定画面からダウンロードできます。 ・Salesforce Classic [設定] →  [管理] →  [データ管理]  →  [データローダ] ・Lightning Experience ギアアイコン →  [設定]  →  [インテグレーション]  →  [データローダ]

②インポートファイル(CSV形式)を用意する

外部ID項目とインポートデータを記載したCSVファイルを作成しておきます。ここでは、取引先を特定するIDとして「取引先コード」を使用します。 例) 外部ID項目の値:取引先コード インポートするデータ:取引先責任者

1)外部ID項目を設定する

データローダでUpsertを実行する際に、レコードを関連づけるのが外部IDです。外部IDが共通するレコード同士を関連づけることができます。対象となるレコードに外部ID項目を作成し、入力する必要があります。

①外部IDとなるカスタム項目を作成する

取引先には「取引先番号」という項目が用意されていますが、この項目には外部IDを追加できません。新規に、外部IDとなる項目を作成しなければなりません。ここでは、外部ID項目を「取引先コード」という名称で作成し、以下の通り選択していきます。 ・データ型  テキスト <一般的なオプション> ・必須 ・ユニーク  値の重複を許可しない。 「ABC」と「abc」を値の重複として扱う(大文字と小文字を区別しない)を選択する。 ・外部ID   外部システムの一意のレコード識別子として設定する。

②外部ID(取引先コード)の値を入力する

①の項で作成した、外部ID項目(取引先コード)に値を入力します。この「取引先コード」がUpsertのキーとなります。 この作業も、データローダを使用してインポートすることが可能です。

2)データをロードする

データローダを使用して、データ(取引先責任者の情報)のインポートを開始します。データローダを使用する際は、万が一に備えてデータのバックアップをとりましょう。 バックアップが完了したら、データローダを起動してUpsertを選択します。

①Select data objects

登録先のオブジェクトとして「取引先責任者」を選択し、インポートファイルを指定します。新規登録の場合は、既存情報とのマッチング項目を指定する必要はありません。

②Choose your related Objects

Upsertのキーとして、外部ID項目(取引先コード)を指定します。選択候補として、IDが表示される中に、外部ID項目(取引先コード)が含まれているでしょう。 これで、取引先責任者の項目と外部ID項目が関連づけられます。

③Mapping Dialog

CSVのデータ「取引先責任者」のマッピング先として、該当するSalesforce上の項目を指定します。(ドラッグ&ドロップ) これで、外部ID項目(取引先コード)を参照して、インポートするデータ(取引先責任者)を取得するよう指定されました。

④Finish

以上で、データインポートの手順は完了です。外部ID項目(取引先コード)に紐づくデータ(取引先責任者)が「取引先」に登録されました。 選択候補から、インポート結果の保存先を指定して終了します。

外部IDを使用する際の注意点

外部IDを使用したとき、想定したレコードが参照されない場合があります。このような不具合の原因となる、外部ID項目とAPIと間の文字識別の差異、エラー防止のための仕様についてご説明します。

APIの外部IDは大文字小文字を区別できない

外部IDの項目では、全角、半角、大文字、小文字が区別され、すべて使用できるようになっています。しかし、Upsertを含むAPIで返される外部IDでは、これらが区別されません。

<解決策>

外部IDとして入力する文字に制限を設けることで、大文字、小文字の混在を避けられます。外部ID項目(カスタム項目)を作成する際、一般オプションで選択できます。 例)半角、小文字のみ

データローダでは自動採番項目を外部IDとして使用できない

外部IDでは自動採番項目を設定できることになっていますが、データローダでUpsertを実行する際には、自動採番項目を選択できません。 データローダでは、自動採番の項目の作成および更新ができないため、表示されません。これはInsertエラーを防止するための仕様です。

<解決策>

この問題には、主に以下の3つの解決策が考えられます。 1,APIに追加プログラムを実装する。 2,Apexトリガ、ワークフロールール、プロセスビルダーなどの自動化ツールを利用する。 ①外部キーとして使用したい自動採番の値を、テキスト型の項目にセットします。 ②自動採番の値と同じ値が保持されたテキスト型項目を、外部キーとして設定します。 3,自動採番からテキスト型に切り替える。 ①データローダを実行する際に自動採番項目をテキスト型に切り替えます。 ②実行後、自動採番に戻します。

外部IDの制限

外部ID項目には、Saelesforceの仕様上の制限事項があります。これらの制限によって外部IDが利用できない場合もありますので、外部IDの活用を考える際には、知っておくとよいでしょう。

外部ID項目(カスタム項目)はオブジェクトあたり25個まで

カスタム項目として作成できるのは、オブジェクトごとに25個が上限となっています。 さらに、API、データインポートウィザードを使用する際、重複を避けるために [一意の] を選択した項目もカスタム項目としてカウントされますので、注意が必要です。 但し、Salesforceによってバックグラウンドで自動的に発生するカスタムインデックスはカウントされません。 追加の外部IDが必要となった場合には、Salesforceサポートに外部ID数の拡張をリクエストすることができます。

外部オブジェクトでは使用できない

外部IDは、外部オブジェクトでは使用できません。外部オブジェクトには、[外部ID] 標準項目があり、外部オブジェクトが外部参照関係の親となる場合には、子レコードの識別に使用されます。

多態的な項目では関連づけができない

外部IDが対応していない項目があります。多態的な項目は関連づけることができません。 ・標準の活動オブジェクトの関連先 (WhatId) 項目 ・名前 (WhoId) 項目 ・カスタムオブジェクトの所有者項目  など

外部IDの活用でデータの移行、連携がスムーズに!

今回は、Salesforceにおける外部IDについてご紹介しました。 外部IDを活用できると、組織に依存しないマスタ管理、外部システムからのデータ移行などが実現できることをご理解いただけたでしょう。 外部IDによって任意の関連づけが可能になりますので、データの利活用の幅が広がります。外部IDの概念をしっかり理解してソリューションに役立てましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】