インポートのモードについて
学習の目的
- インポートのモードの目的を説明する。
- インポートで新しいオブジェクトを追加するモードを 2 つ挙げる。
- インポートを使用してデータを削除可能な方法を説明する。
- データをインポートまたはエクスポートできる 2 通りの一般的な方法を説明する。
- Salesforce B2C Commerce がストアフロントのデータをどのように処理するよう設計されているか説明する。
はじめに
Cloud Kick の新任管理者である Linda Rosenberg は、Business Manager のインポート/エクスポート機能を使用する準備がほぼ完了しています。けれどもマネージャーから、モードのしくみを完全に理解するまでは作業を行わないよう指示されました。スキーマを除けば、モードはインポート/エクスポート機能の最も重要な側面です。
モード
スキーマがデータのファイル構造のルールを定義するのに対し、モードはインポート時にデータに何が実行されるかを定義します。モードには次の種類があります。
それぞれどのように機能するのか見てみましょう。
モード | 実行される操作 |
---|---|
マージ | Business Manager が、新しいデータ (存在しない場合) を追加し、既存のデータを更新します。 |
更新 | Business Manager が、既存のデータを更新しますが、新しいデータは追加しません。XML ファイルにある属性のみを更新します。 |
置換 | Business Manager が、XML ファイルのデータごとに既存のデータを再作成するか、新しいデータを追加します。Business Manager が、XML ファイルにはない既存の属性を削除します。このモードは、削除してからマージするのと同じことです。 |
削除 | Business Manager が、XML ファイルのデータをデータベースから削除します。XML ファイルにオブジェクト ID を指定するだけで処理できます。Business Manager は他のオブジェクト属性を無視します。 |
上級マーチャンダイザーの Traude Beck が Linda に、商品と属性の変更を手伝って欲しいと頼みに来ました。Traude は試験的に少数の商品に Pinterest のフラグを追加したいと考えています。以前、試しに Facebook のフラグを付けてみましたが、この属性は削除したいと思っています。
Linda は Traude が希望する変更のテーブルを作成して、どのモードを使用するかを判断できるようにします。Traude の変更は、T-123440 ~ T-123445 のオブジェクトが対象です。テーブルの A ~ F の文字は、データベースへの変更を示す略語です。たとえば、T-1234440 という商品はすでにデータベースにあり、Traude はこのオブジェクトに pinterest-enabled-flag 属性を追加して true に設定したいと考えています。
A は、データベースの商品を表します。
<product product-id="T-123440">
A1 は、その商品と属性の変更を表します。
<product product-id="T-123440"> <pinterest-enabled-flag>true</pinterest-enabled-flag>
変更 | データベースに存在するかどうか | 商品 (オブジェクト) | 属性 |
---|---|---|---|
A1 - 属性を追加 | はい | <product product-id="T-123440"> | <pinterest-enabled-flag>true</pinterest-enabled-flag> |
B1 - 属性を削除 | はい | <product product-id="T-123441"> | <facebook-enabled-flag>true</facebook-enabled-flag> |
C - 変更なし | はい | <product product-id="T-123442"> | |
D - 新しい商品 | いいえ | <product product-id="T-123443"> | |
E - XML ファイルに存在しない | はい | <product product-id="T-123444"> | |
F1 - 属性を変更 | はい | <product product-id="T-123445"> |
Change: <pinterest-enabled-flag>false</pinterest-enabled-flag> To: <pinterest-enabled-flag>true</pinterest-enabled-flag> |
各モードで、データベースは最終的に次のようになります。
インポート前 | XML ファイル内 | インポートモード | インポート後 |
---|---|---|---|
A、B、C、E、F | A1、B1、C、D、F1 | マージ | A1、B、C、D、E、F1 |
更新 | A、B、C、E、F1 | ||
置換 | A1、B、C、D、E、F1 | ||
削除 | E |
Linda は、モードだけではテーブルにリストされている B1 - 削除属性を変更できないことがわかりました。インポート後も B1 ではなく、B が表示されているのはそのためです。Facebook フラグ属性を削除するためには、XML ファイルの属性値をなしまたは空白に変更してから、マージまたは更新モードでインポートする必要があります。
削除モードの場合は、C のように変更がないものを含め、インポートですべてのオブジェクトが削除されます。
更新モードの場合は、Business Manager が D をデータベースに追加しません。なぜでしょうか? 更新モードでは新しいデータが追加されないためです。
Business Manager は上記のどのシナリオでも E を削除していません。XML ファイルにないオブジェクトには何も実行されないためです。
Linda がオブジェクトを削除できる 1 つの方法は、削除したいオブジェクトのみを含む XML ファイルを作成して、削除モードでそのファイルをインポートすることです。オブジェクトを削除するもう 1 つの方法は、XML フィードのオブジェクトレベルで、インポートの削除モードを指定することです。次はそれについて説明します。
要素のモード
Traude が再び Linda のところに助けを求めてやって来ました。今回は、カタログを更新して 3 つの新商品を追加すると同時に、2 つの商品を削除して欲しいということです。このために Linda は、XML ファイル内の個々の要素にモードを指定します。インポートの要素レベルのモードは、グローバルモードを上書きします。
Linda は両方の種類の商品を記載した XML ファイルを作成します。
<product product-id="T-555361"/> <product product-id="T-367822"/> <product product-id="T-622977"/> <product product-id="T-536378" mode="delete"/> <product product-id="T-638353" mode="delete"/>
対象の商品をリストし、新商品には個別のモードを指定せず、削除する商品に削除モードを指定します。そして、マージモードでインポートを実行します。更新モードを使用しない理由は、2 つの商品は削除されますが、新商品が追加されないためです。
カタログのインポート/エクスポート
B2C Commerce のインポート/エクスポート機能は、カタログの種類などストアフロントの複雑なデータを処理するように設計されていることを Linda はすぐに察知しました。B2C Commerce ではストアフロントと商品の 2 種類のカタログを使用することがベストプラクティスであるため、この点は重要です。Cloud Kicks のカタログもこうした構造になっています! ストアフロントカタログがストアフロントに表示する内容であるのに対し、商品カタログは外部の PIM からインポートした内容を表します。
カタログのインポート
Linda は先ほど、特定の商品や属性の追加と削除を行いましたが、カタログ全体をまとめてインポートすることもできます。この場合は、カタログと、カタログ内のすべてのカテゴリと商品データが対象になります。
カタログのインポートでは、
- 商品カタログとは関係なく、ストアフロントカタログをインポートできます。
- ストアフロントカタログのカテゴリがそのカテゴリの商品を参照できます。
- 他のストアフロントカタログをインポートしても、既存の商品/カテゴリの割り当てには影響ありません。
- 商品カタログの商品更新をインポートしても、ストアフロントカタログのカテゴリの割り当てには影響ありません。
- カタログインポートのセマンティックでは、商品カタログとストアフロントカタログを、相互に独立した自己完結型のデータ単位とみなすため、一方をインポートしたときにもう一方のデータ構造が削除されることはありません。
- Business Manager は、商品が新規か既存かと、使用するモードに基づいてオンライン/オフラインのステータスを更新します。たとえば、インポートファイルにステータスが指定されていない場合、新しい商品がマージモードまたは置換モードでインポートされると、自動的にオフラインに設定されます。
カタログのエクスポート
Linda は、Business Manager で選択した商品またはカタログ全体のデータをエクスポートできます。Linda が [Export Specific Products (特定の商品のエクスポート)] 設定を使用すると、生成されたファイルに、選択した商品のリストとその商品のカテゴリの割り当てのみが記載されます。
エクスポート中に、B2C Commerce が自動的に商品の画像パスの先頭と末尾の空白を取り除き、以前に保存された改行文字を削除します。
オブジェクト固有の処理
B2C Commerce では、各種のオブジェクト (クーポン、顧客、注文、価格表など) のインポートやエクスポートを処理するときに、オブジェクト固有の特定のルールを使用します。では、例として価格表のインポートがどのように処理されるのか見てみましょう。
モード | 価格表の固有の処理 |
---|---|
マージ |
|
更新 |
|
置換 |
|
削除 |
|
すべて |
|
Linda は、インポートやエクスポートの XML ファイルを作成するときに、モードとオブジェクトタイプの両方を検討することが重要であることをすぐに認識しました。