階層プロセッサトランスフォーメーションの概要 ソースデータの形式と目的の出力形式に応じて、いくつかの選択肢の中から要件を満たす処理ストラテジを選択できます。
階層プロセッサトランスフォーメーションは、次のモードで動作します。
• 階層からリレーショナル。1つの階層入力グループを複数の出力グループに変換します。これには、区切りフラットファイルまたはリレーショナルファイルを含めることができます。• リレーショナルから階層。最大5つのリレーショナル入力グループを1つの階層出力グループに変換します。• 階層から階層。1つ以上の階層入力グループを異なるスキーマを持つ1つの階層出力グループに変換します。• 階層からフラット化済み。1つの階層入力グループを1つのフラット化済みの非正規化出力グループに変換します。デフォルトの出力形式はリレーショナルです。
階層プロセッサトランスフォーメーションとの間でやり取りするデータには、Microsoft Azure Data Lake Store V2接続またはAmazon S3 V2接続が必要です。
階層プロセッサトランスフォーメーションの詳細については、YouTubeで次のビデオをご覧ください:
階層型からリレーショナルへのデータ処理 階層データをリレーショナル出力に変換するマッピングでは、1つの階層入力グループを処理し、そのデータを複数のリレーショナル出力グループに書き込むことができます。出力データは、正規化されたリレーショナルデータとして、または区切りフラットファイルに書き込むことができます。
次の図に、マッピングの例を示します。
このマッピングのデータソースは、顧客および注文のデータが含まれる複合ファイルです。データは、顧客データのファイルおよび注文データのファイルという2つのリレーショナルファイルに流れます。
リレーショナルから階層型へのデータ処理 リレーショナルデータを階層出力に変換するマッピングでは、最大5つのリレーショナル入力グループを使用して、1つの階層出力グループに書き込むことができます。このトランスフォーメーションにより、構造と配列を作成できます。また、データソースの結合、データフィールドによるグループ化と並べ替え、特定の情報のフィルタリング、入力データおよび出力データの集計を行うこともできます。
次の図に、マッピングの例を示します。
このマッピングでは、ソース入力に3つのリレーショナルファイル(顧客住所データ、発注書、発注書の詳細)が含まれています。3つのソースファイルからのデータを組み合わせた1つの複合ファイルにデータが流れ込みます。
階層型から階層型へのデータ処理 階層データを階層データに変換するマッピングでは、1つ以上の階層入力グループから読み取りを行って、1つの階層出力グループに書き込むことができます。
特定のスキーマから別のスキーマに階層入力を変換できます。プリミティブフィールド、構造、および配列からデータを読み取り、データを別の構造に変換できます。
また、変換中のデータを変換することもできます。データソースの結合、グループ化フィールドとソート順フィールドの設定、特定の情報のフィルタリング、受信データと出力データの集計を行うことができます。
次の図に、階層プロセッサトランスフォーメーションを使用して階層データを異なる構造の階層データに変換するマッピングの例を示します。
このマッピングでは、データソースは注文と項目のデータを含むJSONファイルです。データは、注文情報を含んだ別のJSONファイルに渡されます。[階層プロセッサ]トランスフォーメーションが選択されており、[階層プロセッサ] タブに受信データと出力データの構造が表示されています。
階層からフラット化済みのデータ処理 階層プロセッサトランスフォーメーションには、出力データに対する[フラット化済み]オプションが含まれています。[フラット化済み]出力形式を使用して、階層入力を非正規化出力に変換します。
階層データをフラット化済みデータに変換するマッピングでは、1つの階層入力グループから読み取りを行って、1つのフラット化済み出力グループに書き込むことができます。プリミティブフィールド、構造体、配列からデータを読み取り、完全に非正規化した出力ファイルをすばやく作成できます。受信フィールドの一部のみをフラット化および非正規化することもできます。
兄弟配列を含むデータソースの場合、複雑な結合を必要とせずに、出力データを簡単に非正規化できます。必要な受信フィールドの横にあるチェックボックスをオンにします。階層プロセッサトランスフォーメーションは、フィールドを出力に追加し、式を自動的に作成します。
次の図に、階層プロセッサトランスフォーメーションを使用して階層データをフラット化したデータに変換するマッピングを示します。
このマッピングでは、データソースはpersonalとvehicleのデータを含むJSONファイルです。データは、vehicle情報を含んだフラット化済みファイルに渡されます。[階層プロセッサ]トランスフォーメーションが選択されており、[階層プロセッサ] タブに受信データと出力データの構造が表示されています。
マルチバイト階層データの設定 マッピングに階層データを処理するトランスフォーメーションが含まれていて、データにマルチバイト文字が使用されている場合は、UTF-8を使用するようにSecure Agentマシンを設定します。
Windowsでは、WindowsシステムプロパティのINFA_CODEPAGENAME=UTF-8環境変数を作成します。
Linuxでは、LC_LOCALE変数をUTF-8に設定します。
フィールドの制限 エラスティックマッピングは、最大7,000,000までの入力フィールドと出力フィールドをサポートします。すべてのマッピングにはこの制限が適用されます。ただし、階層プロセッサトランスフォーメーションを含んだマッピングには複合データが含まれるため、この制限に近づく可能性が高くなります。
階層プロセッサトランスフォーメーションに含まれる結合、子フィールド、ネストされたフィールド、およびフラット化された配列が多いほど、マッピングがフィールド制限を超える可能性は高まります。
マッピングが制限を超過した場合、マッピングコンパイルログに次のメッセージが表示されます。
[LDTM_0502] The mapping [<mapping name>] failed because the number of fields in the compiled mapping exceeds the threshold: [7,000,000]. Number of fields: [<actual number>]. Create multiple mappings to process the data incrementally.
エラーを解決するには、複数のマッピングを作成して複合データを段階的に処理するか、マッピングのサイズを小さくします。