マッピング

データハブにおけるマッピングの概要。

モデル間のマッピングについて

データモデルは、データの構造化の方法を定義します。データセットの各フィールドは、データモデルのプロパティに対応します(データモデルが明示的に定義されていない場合でも)。

ソースデータセットには、異なる複数のデータモデルが存在する場合があります。例えば、同じ内容のフィールドが1つのデータセットでは「family-name」 、他のデータセットでは「surname」となっている場合が想定されます。

モデル間マッピングは、ソースデータセット(データモデル)のフィールド(プロパティ)を標準化されたデータモデルのプロパティに関連付けることで、あらゆるソースのデータに簡単にアクセスできるようにするプロセスです。

例えば、標準化されたデータモデルにプロパティ「lastname」を作成しておけば、「lastname」の値をリクエストした場合に、ソースのフィールド名が「family-name」や「surname」となっていても適切な値が返されます。

MarkLogicデータハブにおけるマッピング

データハブの標準モデルはエンティティモデルです。これはエンティティ(ビジネスオブジェクト)のカノニカルな(規準的な)表現です。

マッピングを定義するには、以下が必要です。

  • エンティティモデル(自分で作成する必要があります)。
  • ソースデータセット(1つ以上)。QuickStartでマッピングを作成する場合、ソースデータセットから少なくとも1つのレコードを読み込む必要があります。
注:データモデルが異なるソースデータセットが複数ある場合は、ソースデータモデルごとに同一エンティティモデルに対してマッピングを行う必要があります。

マッピングを定義する方法は2つあります。

  • 一番簡単なのは、マッピングステップの設定(および作成)の際にQuickStartを使うことです。QuickStartでは、ステージングデータベースにある読み込み済みレコードをどれか1つ選択して、エンティティモデルのプロパティにマッピングしていくソースフィールドを判断します。その後、別の読み込み済みレコードを使って、選択対象であるソースフィールドのリストを生成します。
  • あるいは、各ソースデータセットごとに手作業でマッピング定義ファイルを作成して、マッピングを定義します。

マッピング関数

ベーシックなマッピングでは、1つのエンティティプロパティをソースレコード内の1つのフィールドと関連付けます。しかし、マッピング式を指定することで、エンティティプロパティに割り当てる値を算出することもできます。

マッピング式は有効なXPath式で、これに関数を含めたり、1つあるいは複数のソースフィールドの値を使用できます。例えば、2つのソースフィールドの値を合算し、その合計を1つのエンティティプロパティに入れることができます。

いくつかのマッピング関数がすでに準備されています。

あるいは自分でカスタム関数を作成可能です。

注:エンティティモデルでは、プロパティを入れ子にできます。

マッピングされたエンティティインスタンスの検証

エンティティモデルに基づいて、マッピング済みエンティティインスタンスをスキーマドキュメントに対して検証するかどうか、および齟齬を処理する方法を指定するには、マッピングステップのvalidateEntityオプションを指定します。

   "2" : {
    "name" : "MyMappingStep",
    ...,
    "options" : {
      ...,
      "validateEntity" : "false",
      ...
    }
  },
フィールド 説明
"validateEntity" : "false" データの型を比較しません。
"validateEntity" : "accept" データの型を比較します。比較が失敗した場合でも、マッピング済みのレコードが作成されます。

比較が失敗した場合、検証エラーが新しくマッピングされたレコードのエンベロープのヘッダ部分(envelope.headers.datahub.validationErrors)に記録されます。どこでマッピングステップが失敗したのかも記録されます。

"validateEntity" : "reject" データの型を比較します。比較が失敗した場合、マッピング済みのレコードは作成されません。

比較が失敗した場合、検証エラーがJOBSデータベース内のバッチドキュメントに記録されます。

この設定は、GradleタスクhubCreateFlowおよびhubCreateStepDefinitionによって生成されるマッピングステップ内に含まれます。マッピングステップをQuickStartで作成している場合、このオプションはフロー定義ファイルに手作業で追加できます。