複合 XML 要素のフラット化

データフローのほとんどのステージで、フラット形式のデータが必要とされます。つまり、XML ファイルの階層データをデータフローに読み込む場合に、データに複合 XML 要素が含まれているときは、データをフラット化する必要があります。複合 XML 要素は、他の要素または属性を含む要素です。例えば、次のデータ ファイルでは、<address> 要素と<account> 要素は複合 XML 要素です。

<customers>
    <customer>
        <name>Sam</name>
        <gender>M</gender>
        <age>43</age>
        <country>United States</country>
        <address>
            <addressline1>1253 Summer St.</addressline1>
            <city>Boston</city>
            <stateprovince>MA</stateprovince>
            <postalcode>02110</postalcode>
        </address>
        <account>
            <type>Savings</type>
            <number>019922</number>
        </account>
    </customer>
    <customer>
        <name>Jeff</name>
        <gender>M</gender>
        <age>32</age>
        <country>Canada</country>
        <address>
            <addressline1>26 Wellington St.</addressline1>
            <city>Toronto</city>
            <stateprovince>ON</stateprovince>
            <postalcode>M5E 1S2</postalcode>
        </address>
        <account>
            <type>Checking</type>
            <number>238832</number>
        </account>
    </customer>
    <customer>
        <name>Mary</name>
        <gender>F</gender>
        <age>61</age>
        <country>Australia</country>
        <address>
            <addressline1>Level 7, 1 Elizabeth Plaza</addressline1>
            <city>North Sydney</city>
            <stateprovince>NSW</stateprovince>
            <postalcode>2060</postalcode>
        </address>
        <account>
            <type>Savings</type>
            <number>839938</number>
        </account>
    </customer>
</customers>

次の手順は、Splitter ステージを使用して、複数の複合 XML 要素を含む XML データをフラット化する方法を説明したものです。

注: データに 1 つの複合 XML 要素が含まれる場合は、1 つの Splitter ステージを使用して、Read from XML ステージを Splitter ステージに接続するだけで、データをフラット化できます。1 つの複合 XML 要素を含むデータ ファイルに対しては、この手順で説明するように Broadcaster ステージと Record Combiner ステージを使用する必要はありません。
  1. Read from XML ステージをデータ フローに追加して、設定します。詳細については、Read From XMLを参照してください。
  2. Broadcaster ステージを追加して、Read from XML ステージを接続します。
  3. データ内の複合 XML 要素ごとに Splitter ステージを追加します。
  4. Broadcaster ステージを各 Splitter に接続します。
  5. Record Combiner ステージを追加して、各 Splitter を接続します。

    データ フローは次のようになっているはずです。

  6. 最初の Splitter ステージをダブルクリックして、ステージのオプション を開きます。
  7. [分割位置] フィールドで、いずれかの複合フィールドを選択します。上記の例のデータ ファイルでは、address フィールドを選択できます。
  8. [OK] をクリックします。
  9. 追加した Splitter ステージをそれぞれ設定し、各 Splitter の [分割位置] フィールドで異なる複合 XML 要素を選択します。

データ フローは、複合 XML 要素を持つレコードを含む XML 入力を受け入れ、データをフラット化するように設定されました。Record Combiner から生成されるレコードは、フラット データを必要とするすべてのステージに送ることができます。例えば、Record Combiner ステージを Validate Address ステージに接続して、住所を検証できます。