以下の手順に従って、次の操作を行うtMapコンポーネントを定義します。
-
入力と出力間のデータ型自動変換を行い、ジョブの実行時にコンパイルエラーが発生しないようにする
-
各人物の名(ファーストネーム)と姓(ラストネーム)を組み合わせる
手順
-
次の関数とパラメーターを入力し、コンポーネントを追加します。
addComponent { setComponentDefinition { TYPE: "tMap", NAME: "tMap_1", POSITION: 480, 256 } }
-
setComponentDefinition {}関数の次にsetSettings {}関数を入力し、マッパー設定を定義します。
この例では、idカラムとageカラムのデータ型は入力スキーマでは文字列型ですが、出力スキーマでは整数型になっています。コンポーネントのデータ型自動変換機能を有効にして、その他の設定はデフォルトのままにします。
setSettings { ENABLE_AUTO_CONVERT_TYPE : "true" }
-
setSettings {}関数の次にaddSchema {}関数を入力し、次のコンポーネントが期待するデータ構造を定義します。
この例では出力フローの名前がoutで、次の4つのカラムで構成されています。
-
id、整数型、2桁
-
full_name、文字列型
-
age、整数型、2桁
-
city、文字列型
addSchema { NAME: "out", CONNECTOR: "FLOW", LABEL: "out" addColumn { NAME: "id", TYPE: "id_Integer", LENGTH: 2 } addColumn { NAME: "full_name", TYPE: "id_String" } addColumn { NAME: "age", TYPE: "id_Integer", LENGTH: 2 } addColumn { NAME: "city", TYPE: "id_String" } }
-
- addSchema {}関数の次にaddMapperData {}関数を入力し、入力テーブル、出力テーブル、変数テーブル、結合、マッピングを含むマッピングデータを定義します。
-
addMapperData {}関数にaddInputTable {}関数を入力して、メイン入力フローの入力テーブルを定義します。
カラム定義は1番目のtFileInputDelimitedコンポーネントのカラム定義と同じであることが必要です。
addMapperData { addInputTable { NAME: "row1" addColumn { NAME: "id", TYPE: "id_String" } addColumn { NAME: "name", TYPE: "id_String" } addColumn { NAME: "age", TYPE: "id_String" } addColumn { NAME: "city", TYPE: "id_String" } } }
-
addMapperData {}関数で別のaddInputTable {}関数を入力し、ルックアップフローの入力テーブルを定義します。
カラム定義は2番目のtFileInputDelimitedコンポーネントのカラム定義と同じであることが必要です。
-
idカラムの定義ではEXPRESSION: "row1.id"というパラメーターを入力し、idカラムで2つの入力テーブル間の結合を設定します。
この例では、左外部結合を定義しています。内部結合を定義するには、ISINNERJOIN: trueパラメーターをaddInputTable {}関数に追加します。
addInputTable { NAME: "row2" addColumn { NAME: "id", TYPE: "id_String" EXPRESSION: "row1.id" } addColumn { NAME: "family", TYPE: "id_String" } }
-
addMapperData {}関数にaddOutputTable {}関数を入力し、この例では唯一である出力テーブルを定義します。
カラム定義はスキーマ設定で定義されているものと同じであることが必要です。IDパラメーターは必須ですが、IDが必要なのは、出力テーブルがリポジトリースキーマを使用する場合のみです。
-
各出力カラムにEXPRESSIONパラメーターを追加することによって、入力カラムと出力カラムの間のマッピングを設定します。
full_nameカラムはメイン入力フローのnameカラムとルックアップフローのfamilyカラムの組み合わせとなり、この間にスペースを1つ入力します。
addOutputTable { ID: "", NAME: "out" addColumn { NAME: "id", TYPE: "id_Integer", EXPRESSION: "row1.id" } addColumn { NAME: "full_name", TYPE: "id_String", EXPRESSION: "row1.name + \" \" + row2.family" } addColumn { NAME: "age", TYPE: "id_Integer", EXPRESSION: "row1.age" } addColumn { NAME: "city", TYPE: "id_String", EXPRESSION: "row1.city " } }
警告:メタ文字を指定する場合、必ずバックスラッシュ(\)を使用してください。