メイン コンテンツをスキップする 補完的コンテンツへスキップ

Data Integrationジョブでマップを作成

JSONファイルをCSVに変換するジョブを作成します。

このタスクについて

この例では、さまざまなタイプの電話番号の配列といった顧客情報が含まれているJSONファイルがあります。目標は、情報の各部分ごとにカラムを持つシンプルなCSVファイルに変換することです。入力には次のJSONサンプルを使います:
{
   "customers":[
      {
         "firstName":"John",
         "lastName":"Smith",
         "age":25,
         "address":{
            "streetAddress":"21 2nd Street",
            "city":"New York",
            "state":"NY",
            "postalCode":"10021"
         },
         "phoneNumber":[
            {
               "type":"home",
               "number":"202-555-0109"
            },
            {
               "type":"mobile",
               "number":"202-555-0181"
            }
         ]
      },
      {
         "firstName":"Jane",
         "lastName":"Doe",
         "age":31,
         "address":{
            "streetAddress":"19 4th Street",
            "city":"New York",
            "state":"NY",
            "postalCode":"10021"
         },
         "phoneNumber":[
            {
               "type":"home",
               "number":"202-555-0178"
            },
            {
               "type":"mobile",
               "number":"202-555-0123"
            },
            {
               "type":"work",
               "number":"202-555-0163"
            }
         ]
      }
   ]
}

Data Integrationジョブの入力ストラクチャーを作成

サンプルドキュメントをベースにJSONストラクチャーを作成し、マッピングの入力として使います。

Before you begin

入力として使用するJSONファイルがあること。上のサンプルを使用できます。

About this task

階層マッパーでストラクチャーを作成すれば、ネストしたレベルが複数あるファイルを扱う場合に特に便利です。ストラクチャーは、IntegrationパースペクティブのリポジトリーにあるMetadataノードから直接作成することも、マッピングパースペクティブの[Data Mapper]タブから作成することもできます。

詳細は、ストラクチャーを使って作業をご覧ください。

Procedure

  1. [Hierarchical Mapper] (階層マッパー)ノードを展開して[Structure] (ストラクチャー)を右クリックし、[New] (新規) > [Structure] (ストラクチャー)をクリックします。
  2. ウィザードが開いたら、[Import a structure definition] (ストラクチャー定義をインポート)を選択して[Next] (次へ)をクリックします。
  3. [JSON Sample Document] (JSONサンプルドキュメント)を選択して[Next] (次へ)をクリックします。
  4. 使用するファイルを選択します:
    • ワークスペースで既存のリソースを選択します。
    • ローカルファイルをインポートします。
    • このファイルにURLを入力します。
  5. [Next] (次へ)をクリックします。
  6. フォルダーを選択して新しいストラクチャーの名前を入力し、[Next] (次へ)をクリックします。
  7. [Finish] (終了)をクリックします。

Results

ストラクチャーが作成され、エディターで開かれます。[Document] (ドキュメント)タブにサンプルデータが表示されます。ストラクチャーでエレメントをクリックすると強調表示されます。
"customers_data_json"ストラクチャーで"phoneNumber"エレメントが強調表示されている状態。

Data Integrationジョブを作成

tFileInputRawtHMaptFileOutputDelimitedを持つシンプルなジョブを作成します。

Procedure

  1. Integrationパースペクティブで[Job Designs] (ジョブデザイン)ノードを右クリックし、[Create Standard Job] (標準ジョブを作成) をクリックします。
  2. ジョブの名前、目的、説明を入力して[Finish] (終了)をクリックします。
  3. 次のコンポーネントをデザインワークスペースに追加し、[Row] (行) > [Main] (メイン)接続にリンクさせます。
    • tFileInputRaw
    • tHMap
    • tFileOutputDelimited
    ジョブは次のようになります。
    デザインワークスペースでの標準ジョブ。
  4. tFileInputRawをダブルクリックしてそのプロパティを開き、[Filename] (ファイル名)フィールドの左にある[...]ボタンをクリックして入力JSONファイルを選択します。
  5. tFileOutputDelimitedをダブルクリックし、[File Name] (ファイル名)フィールドに出力ファイルへのパスを入力します。
  6. Optional: 必要であれば他のプロパティも編集します。
  7. [Edit schema] (スキーマを編集)の右にある[...]ボタンをクリックし、出力ファイル用のスキーマを作成します。
  8. [Input] (入力)スキーマで、[+]ボタンをクリックして次のカラムを追加します。
    • firstName
    • lastName
    • age
    • streetAddress
    • city
    • state
    • postalCode
    • homePhoneNumber
    • mobilePhoneNumber
    • workPhoneNumber
  9. [Copy all of the columns from input schema to output schema] (すべてのカラムを入力スキーマから出力スキーマへコピー)ボタンをクリックし、カラムを出力スキーマにコピーしてOKをクリックします。
    tFileOutputDelimitedのスキーマ。
  10. [OK]をクリックして、スキーマエディターを閉じます。
  11. tHMapをダブルクリックし、ウィザードに従ってマップを生成します。
    1. 最初のステップで[Select an existing hierarchical mapper structure] (既存の階層マッパーストラクチャーを選択する)を選択し、[Next] (次へ)をクリックします。
    2. Data Integrationジョブの入力ストラクチャーを作成で作成したストラクチャーを選択して[Next] (次へ)をクリックした後、もう一度[Next] (次へ)をクリックします。
    3. 2番目のステップで、[Generate hierarchical mapper structure based on the schema] (スキーマに基づいて階層マッパーストラクチャーを生成)オプションをオンにして[Next] (次へ)をクリックします。
    4. [Finish] (終了)をクリックします。

Results

マップが生成されます。このマップは、前に作成され、tFileOutputDelimitedで定義されたスキーマから出力ストラクチャーを生成した入力ストラクチャーを使用します。これでエレメントをマッピングできるようになります。

Data Integrationジョブ用にエレメントをマッピング

前のステップで生成したマップを設定します。

Procedure

  1. 入力customersエレメントを出力rowエレメントにドラッグします。

    firstNameエレメント、lastNameエレメント、ageエレメントが自動的にマッピングされ、入力customersエレメントへの参照を持つSimpleLoopファンクションが出力rowエレメントの[Loop] (ループ)タブに追加されます。

    このループ式は、入力のcustomersエレメントが反復されるたびにマップが出力に1行生成することを示しています。For more information, see Loop expressions.
    入力から出力へのループ式。
  2. 入力streetAddressエレメント、cityエレメント、stateエレメント、postalCodeエレメントを、対応する出力エレメントにドラッグ&ドロップします。
  3. AgConcat式を出力homePhoneNumberエレメントにドラッグ&ドロップします。
  4. 入力numberエレメントをAgConcatファンクションにドラッグします。
    それぞれのcustomersに複数のnumberエレメントがあるため、この操作は必須です。また、エレメント用に単一の出力を作成する必要もあります。
    入力phoneNumberループを使うループ式が生成されます。
  5. EqualファンクションをSimpleLoopファンクションのFilter引数にドラッグ&ドロップします。
  6. 入力typeエレメントをFirst Value引数にドラッグします。
  7. ConstantファンクションをSecond Value引数にドラッグ&ドロップした後にダブルクリックし、[Value] (値)フィールドにhomeと入力して[OK]をクリックします。
    このフィルターによってhomePhoneNumberエレメントは、typeの値がhomeに等しい反復でnumberエレメントの値を返すようになります。
  8. AgConcatファンクションを右クリックし、[Copy] (コピー)をクリックして式全体をコピーします。
  9. mobilePhoneNumberを右クリックし、[Paste] (貼り付け)をクリックします。
    AgConcat式がmobilePhoneNumberエレメントの[Value] (値)タブにコピーされます。
  10. AgConcatを右クリックし、[Expand All] (すべて展開)をクリックして式全体を表示させた後、Constantファンクションをダブルクリックして値をmobileに変更します。
  11. 前のステップを繰り返してAgConcat式を出力workPhoneNumberエレメントにコピーし、Constant式の値をworkに変更します。
  12. マップを保存します。

Results

これでエレメントがマッピングされます。
出力をテストする場合は[Test Run] (テスト実行)オプションを使います。その後、ジョブに戻って実行します。サンプル入力データを使った出力は次のようになります:
John,Smith,25,21 2nd Street,New York,NY,10021,202-555-0109,202-555-0181,
Jane,Doe,31,19 4th Street,New York,NY,10021,202-555-0178,202-555-0123,202-555-0163

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。