[SFDC vs D365]データインポート(Salesforce編)

今までデータを入れるところはスルーしていましたが、やっぱりデータを入れてみないと実感が湧かないので、いよいよデータを投入したいと思います。
まずは、Salesforce側から。

スポンサーリンク

今回の目的

それぞれのオブジェクトにDataLoaderを使用してデータを投入すること。
また、データ投入のための下準備も行う。
Salesforceのオプジェクトにデータインポート

データインポート前にやっておきたいこと

DataLoaderインストール

インポートのためにはツールが必要です。
データインポートウィザードでインポートするやり方もありますが、重複が排除できる以外はDataloaderの方が機能的に上位互換にあたるため、Salesforceでは、Dataloaderを使用するのが一般的です。
正直、データインポートウィザードは資格勉強で学んだ程度で使ったことがないんですけどね。

なので、Dataloaderのインストールから。
[設定]→[管理]→[データの管理]→[データローダ]からDataloaderのインストールが可能です。

外部キーがあると便利

レコードには、必ずSalesforceIDを持っており、レコードを一意に特定するためのキーになります。
ただ、そのSalesforceIDはシステムが自動で割り当てる上、一度保存しないと割り当てられないので、インポートキーとして使用するには不向きです。

そこで、外部IDを使用します。
それぞれのエンティティで以下外部IDを定義します。
外部IDはテキスト項目で作成し、外部IDにチェックをつけることでインポートのキーとして使用することができます。

オブジェクト 外部ID項目 API参照名 桁数 採番ルール
球場 球場コード StadiumCode__c 10 都道府県コード(2桁)+連番(2桁)
球場 球団コード AccountCode__c 5 所属リーグ(セリーグ・・・C/パリーグ・・・P)+連番(2桁)
所属選手 選手ID PlayerID__c 100 姓+名+生年月日(YYYYMMDD)

外部IDは、必ず必須かつユニークにするようにしてください
必須やユニークでない設定も可能ですが、データインポート時のエラーの原因となるので、キーが一意となるようなルール決めを徹底しましょう。

参照項目紐付け用の数式を作る

それぞれのエンティティで外部IDを作成したら、今後は参照項目紐付け用の数式項目を使用します。
参照先オブジェクトの外部IDを表示します。

オブジェクト 数式項目 API参照名 数式
球団 球場コード StadiumCode__c Franchise__r.StadiumCode__c
所属選手 球団コード AccountCode__c Account.AccountCode__c
球団 創設日(インポート用) FoundingDateImport__c FoundingDate__c+1
所属選手 誕生日(インポート用) BirthDayImport__c BirthDate+1

これを置いておくことによって、参照項目のリレーションにわざわざSalesforceIDを設定する必要が無くなります。

また、もう一つのテクニックとして、日付型を扱う場合、日付項目に+1日加算した数式項目を用意します。
これはSalesforce界では有名な、日付インポートの時に1日ズレる対策のために用意しています。
計算値からインポートすることで、1日ズレ対策を調整しています。

データの準備

オブジェクトの型は作ったので、あとはデータを作成してのインポートです。
NPBのデータ関連は、NPBホームページにあるものを使用します。

球場データ

球場データはこちらをもとに作成。

出来上がったデータはこちらになります。
緯度経度はGoogleのジオコーディングから数値を出しています。

球団データ

球団データはこちらをもとに作成。
出来上がったデータはこちらになります。

所属選手データ

最後に所属選手。
全球団は作りきれなかったので、カープの選手だけでもインポートしてみます。

なお、外部IDは選手数分作成が大変なので、Excelなどで文字列結合させるのも一つの手ではありますが、この後に触れるワークフローを使用して自動化するといいでしょう。
作成したデータが、こちらになります。

データインポート

作成したcsvを使用してインポートします。
参照の関係で、球場→球団→所属選手の順に行います。

球場データ

外部キーを使ってデータを投入するには、DataLoaderのUpsertを選択。
外部キーを使用する場合はUpsertを使用する

オブジェクトに球場を選択。
ファイルはダウンロードしたcsvファイルを指定。
DataLoaderから対象オブジェクトを選択

次がキーとなる項目を選択。
球場コードをキーとするため、StadiumCode__cを選択。
キーとなる項目(ここでは球場コード)を選択

項目のマッチングはこのように選択。
「Create or Edit a Map」で自動マッピングされた状態で大丈夫です。
項目のマッピングは名称が合っていれば自動設定される

出力先フォルダを指定して、「Finishi」ボタン押下。
このように、12 successfulが出れば成功。
Upsert後のデータ投入結果
errorsがカウントされていた場合は、出力先フォルダのerrorに原因が記載されているので、解消して再度実施しましょう。

基本的な入れ方はこんな感じです。
外部IDを明示的に指定する以外はデフォルトの操作で大丈夫です。

球団データ

次に球団データ。

同じようにUpsertから、Accountを選択して、外部IDであるAccountCode__cを選択。
次がポイント。親オブジェクトの外部IDを指定して、参照関係を構築するため、参照項目(Franchise__r)の外部ID(StadiumCode__c)を指定します。
参照先のキーとなる外部IDを選択

次にマッピング。
「Auto-Match Fields to Columns」で自動マッピングしますが、マッピングされないところは手動でドラッグアンドドロップします。
まず、FOUNDINGDATEIMPORT__cにはFoundingDate__c(創設日)をマッピング。
FOUNDINGDATEIMPORT__cには本来入るべき創設日の+1日が設定されていますが、インポート時の1日ズレを想定して数式項目の方をFoundingDate__c(創設日)に設定しています。
そして、STADIUMCODE__cにはFranchise__r:StadiumCode__cをドラッグアンドドロップ。
親オブジェクトの外部IDとマッピングさせることで、SalesforceIDを指定することなく、参照関係が作れます。
マッピングの際は明示的に参照先キー項目をマッピング

所属選手データ

こちらも同じようにUpsertから、Contactを選択して、外部IDであるPlayerID__cを選択。

AccountにはAccountCode__cを選択。
選手データも同様に球団のコードを参照先キーに指定

マッピングはこのように設定。
選手データのマッピング設定

これで、データ投入作業は終わりです。
外部IDの使い方がわかって入れば参照項目付きのオブジェクトでも問題なく投入ができることを押さえておきましょう。
後編はDynamics側のデータインポートになります。

コメント