フラットファイルから再帰ループを作成 - 7.3

Talend Data Mapperファンクションリファレンスガイド

Version
7.3
Language
日本語
Product
Talend Big Data Platform
Talend Data Fabric
Talend Data Management Platform
Talend Data Services Platform
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > ジョブデザイン
Last publication date
2023-01-09

FlatToHierarchyLoopファンクションを使えば、フラットファイルで定義されたレベルに基づいて再帰ループを作成できます。

始める前に

入力ストラクチャーと出力ストラクチャーを持つマップを作成済みであること。次のサンプルを使用できます。

このタスクについて

この例では、タイトル、ページ番号、各エレメントのレベルに対応する番号を持つ目次を記述したCSVファイルを使います。エレメントがそのレベルに基づいてネストされているXMLファイルを作成したいとします。入力には次のサンプルを使います:
title,page,level
Introduction,3,1
Part 1,10,1
Chapter 1,10,2
Section 1,10,3
Section 2,31,3
Section 3,56,3
Chapter 2,80,2
Section 1,80,3
Section 2,102,3
Part 2,125,1
Chapter 1,125,2
Chapter 2,160,2
Section 1,160,3
Section 2,185,3
Conclusion,213,1
次のXMLサンプルを使えば、出力ストラクチャーを作成できます:
<contents>
	<entry>
		<title/>
		<page/>
	</entry>
	<entry>
		<title/>
		<page/>
	</entry>
</contents>

手順

  1. 出力entryエレメントをクリックし、[Loop] (ループ)タブでFlatToHierarchyLoopファンクションをドロップします。
  2. 入力rowエレメントをInput Map Element引数にドラッグ&ドロップします。
  3. 入力levelエレメントをLevel Numberエレメントにドラッグ&ドロップします。
    このファンクションは入力ファイルのlevelカラムにある数を使い、出力で再帰ループをストラクチャー化する方法を決定します。
  4. 入力rowエレメントを出力entryエレメントにドラッグ&ドロップし、titlepageを自動的にマッピングさせます。

タスクの結果

マップが設定され、次のように表示されます。
[Test Run] (テスト実行)機能を使えば結果を表示できます。この例では次のような出力が返されます。
<contents>
  <entry>
    <title>Introduction</title>
    <page>3</page>
  </entry>
  <entry>
    <title>Part 1</title>
    <page>10</page>
    <entry>
      <title>Chapter 1</title>
      <page>10</page>
      <entry>
        <title>Section 1</title>
        <page>10</page>
      </entry>
      <entry>
        <title>Section 2</title>
        <page>31</page>
      </entry>
      <entry>
        <title>Section 3</title>
        <page>56</page>
      </entry>
    </entry>
    <entry>
      <title>Chapter 2</title>
      <page>80</page>
      <entry>
        <title>Section 1</title>
        <page>80</page>
      </entry>
      <entry>
        <title>Section 2</title>
        <page>102</page>
      </entry>
    </entry>
  </entry>
  <entry>
    <title>Part 2</title>
    <page>125</page>
    <entry>
      <title>Chapter 1</title>
      <page>125</page>
    </entry>
    <entry>
      <title>Chapter 2</title>
      <page>160</page>
      <entry>
        <title>Section 1</title>
        <page>160</page>
      </entry>
      <entry>
        <title>Section 2</title>
        <page>185</page>
      </entry>
    </entry>
  </entry>
  <entry>
    <title>Conclusion</title>
    <page>213</page>
  </entry>
</contents>