外部IDの桁数が項目値とCSVで異なる場合の挙動

外部IDの桁数が項目値とCSVで異なる場合の挙動

データ移行の際によくお世話になっている外部ID。ユニークな値を持たせてレコードの識別のために使いますが、桁数について質問をいただきました。
外部IDの桁数が項目値とCSVで異なる場合の挙動
3
外部IDの桁数が項目値とCSVで異なる場合の挙動
Admin
2020/09/09 17:40:41
前回に引き続き、「多分こうなると思うけど、言われてみればどうなるのだろう」シリーズです。
今回は、データ移行にとても便利な外部IDについて、桁数の違いがあってもUpsertが可能かどうか検証してみました。



状況

1. 同じ情報(レコード)に対する外部IDの桁数が異なる


取引先に「顧客コード」という外部ID項目を作成してあります。
CSVでは4桁で表示しています。

Salesforceの値
取引先名「株式会社あごーら」 顧客コード(外部ID):1
取引先名「XXXXカンパニー」 顧客コード外部ID):10

CSVの値
取引先名「株式会社あごーら」 顧客コード(外部ID):0001
取引先名「XXXXカンパニー」 顧客コード(外部ID):0010



検証
外部ID「顧客コード」を使用してCSVを作成し、商談を取引先に紐づけて登録するようにDataLoaderで Upsertを実施しました。

検証結果
エラーとなり、商談のレコードは登録されませんでした。
エラーメッセージはCSVで「 not found for field ExternalID__c in entity Account 」と表示されました。
Salesforce上に既に登録されている外部IDと、CSV上の外部IDの桁数が同じレコードで異なる場合(=同じレコードで異なる外部IDの値を持つ場合)、IDは不一致とみなされてUpsertはエラーとりなるようです。




2.外部IDの値のなかで桁数にばらつきがある


同じように取引先に「顧客コード」という外部ID項目を作成してあります。
Salesforceの値、CSV上の値の桁数は同じにしてありますが、レコードごとに異なっています。

Salesforceの登録
取引先レコードA 外部ID「顧客コード」:001
取引先レコードB 外部ID「顧客コード」:00001

CSVの値
取引先レコードA 外部ID「顧客コード」:001
取引先レコードB 外部ID「顧客コード」:00001



検証
前述のパターンと同様に、取引先に外部IDを設定。外部IDを使用してCSVを作成し、商談を取引先に紐づけるように DataLoaderで Upsertを実施しました。

検証結果
エラーもなく DataLoaderの Upsertが完了し、商談が外部IDで取引先と関連付けられた状態で登録されました。
Salesforce上に既に登録されている外部IDとCSV上の値が、レコードによって桁数が異なる場合でも同じレコードでは桁数が一致してる(=同じレコードでは同じ外部IDの値を持つ場合)ときは、外部IDで関連付けながらレコードを登録することができます。


結論

同一項目の中で、レコードによって値の桁数にばらつきがある場合でも、外部IDの値として同一であれば(=ユニークな値が一致していれば)、Upsertは可能でした。


考察

ヘルプの外部IDの属性を確認すると、
カスタムの自動採番項目、メール項目、数値項目、またはテキスト項目を 25 項目まで設定できます。
と記載があり、メールやテキストは値によって桁数が異なるので、今回確認した挙動も予測できるかと思います。

◇Salesforce>ヘルプ>カスタム項目の属性


参考

◇Salesforce>ヘルプ>外部 ID を使用して関連レコードをインポートする

gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
3
コメント