マッピングコードのカスタマイズ
マッピング定義ファイル
詳細は、マッピング定義を参照してください。
マッピングコードのカスタマイズ
マッピングコードは、ソースデータセットのプロパティ値を抽出し、これを対応するエンティティプロパティにコピーします。マッピングステップをQuickStartで設定した場合、データハブはこのコードを自動生成します。これはカスタマイズ可能です。あるいはUIを使わずに、自分でマッピングコードを作成することもできます。
Tというエンティティタイプのデフォルトコードには、マッピングに基づいて、extractInstanceTという関数が常に含まれます。マッピングステップが実行されると、データハブはこの関数を呼び出して、各レコードのエンベロープ内のエンティティプロパティの値を更新します。これらの値は、この関数にカスタムコードを追加することで変換できます。
extractInstanceT関数には、各エンティティプロパティの変数宣言が含まれています。この宣言では、ソースプロパティ SPの値を抽出して、エンティティプロパティ EPに割り当てます。
let EPName = !fn.empty(source.xpath(pathToSP))
? EPType(fn.head(source.xpath(pathToSP)))
: null;
ソースデータにターゲットプロパティが含まれていない場合、エンティティプロパティはnull
に初期化されます。
プロパティの処理をカスタマイズするには通常、この変数を設定します(コードの他の部分はそのままにしておきます)。
データハブ では次の条件が満たされると、マッピングで指定されていないエンティティプロパティのデフォルトマッピングコードを生成します。
- ソースプロパティの名前は、エンティティプロパティと同じです。
- ソースプロパティの値は、エンティティプロパティのデータ型に直接キャストできます。
- ソースプロパティには、XPath式/_propName_でアクセスできます。
例:プロパティ名の変更
ソースプロパティの名前がSKUで、 エンティティプロパティの名前がskuの場合、デフォルトのextractInstanceT関数には、以下の変数宣言が含まれます。
let sku = !fn.empty(source.xpath('//SKU'))
? xs.string(fn.head(source.xpath('//SKU')))
: null;
例:シンプルな型変換
ソースのプロパティ(price)が数字を含む文字列であり、エンティティプロパティ(price)が10進数の場合、デフォルトのextractInstanceT関数に、ソース文字列を10進数にキャストする次の変数宣言を含めます。
let price = !fn.empty(source.xpath('//price'))
? xs.decimal(fn.head(source.xpath('//price')))
: null;
ソースプロパティに数字以外の文字が含まれている可能性がある場合、この宣言をカスタマイズする必要があります。