トランスフォーメーション > 階層プロセッサトランスフォーメーション > 階層プロセッサトランスフォーメーションの概要
  

階層プロセッサトランスフォーメーションの概要

ソースデータの形式と目的の出力形式に応じて、いくつかの選択肢の中から要件を満たす処理ストラテジを選択できます。
階層プロセッサトランスフォーメーションは、次のモードで動作します。
デフォルトの出力形式はリレーショナルです。
階層プロセッサトランスフォーメーションとの間でやり取りするデータには、Microsoft Azure Data Lake Store V2接続またはAmazon S3 V2接続が必要です。
階層プロセッサトランスフォーメーションの詳細については、YouTubeで次のビデオをご覧ください:

階層型からリレーショナルへのデータ処理

階層データをリレーショナル出力に変換するマッピングでは、1つの階層入力グループを処理し、そのデータを複数のリレーショナル出力グループに書き込むことができます。出力データは、正規化されたリレーショナルデータとして、または区切りフラットファイルに書き込むことができます。
次の図に、マッピングの例を示します。
このマッピングでは、1つのソーストランスフォーメーションが1つの階層プロセッサトランスフォーメーションに接続し、その階層プロセッサトランスフォーメーションが2つのターゲットトランスフォーメーションに接続しています。
このマッピングのデータソースは、顧客および注文のデータが含まれる複合ファイルです。データは、顧客データのファイルおよび注文データのファイルという2つのリレーショナルファイルに流れます。
詳細については、階層プロセッサトランスフォーメーションを使用したリレーショナル出力の定義を参照してください。

リレーショナルから階層型へのデータ処理

リレーショナルデータを階層出力に変換するマッピングでは、最大5つのリレーショナル入力グループを使用して、1つの階層出力グループに書き込むことができます。このトランスフォーメーションにより、構造と配列を作成できます。また、データソースの結合、データフィールドによるグループ化と並べ替え、特定の情報のフィルタリング、入力データおよび出力データの集計を行うこともできます。
次の図に、マッピングの例を示します。
マッピングには、1つのターゲットトランスフォーメーションに接続されている階層プロセッサトランスフォーメーションに接続されている3つのソーストランスフォーメーションが含まれています。
このマッピングでは、ソース入力に3つのリレーショナルファイル(顧客住所データ、発注書、発注書の詳細)が含まれています。3つのソースファイルからのデータを組み合わせた1つの複合ファイルにデータが流れ込みます。
詳細については、階層プロセッサトランスフォーメーションを使用した階層出力の定義を参照してください。

階層型から階層型へのデータ処理

階層データを階層データに変換するマッピングでは、1つ以上の階層入力グループから読み取りを行って、1つの階層出力グループに書き込むことができます。
特定のスキーマから別のスキーマに階層入力を変換できます。プリミティブフィールド、構造、および配列からデータを読み取り、データを別の構造に変換できます。
また、変換中のデータを変換することもできます。データソースの結合、グループ化フィールドとソート順フィールドの設定、特定の情報のフィルタリング、受信データと出力データの集計を行うことができます。
次の図に、階層プロセッサトランスフォーメーションを使用して階層データを異なる構造の階層データに変換するマッピングの例を示します。
このマッピングは、ターゲットに接続された階層プロセッサトランスフォーメーションに接続されたソースを示しています。Mapping Designerで[階層プロセッサ]トランスフォーメーションが選択されており、[階層プロセッサ]タブが選択されています。[受信フィールド]パネルには、CompanyName(文字列)とOrders(配列)というフィールドを持つ1つの入力グループが表示されています。Orders配列には、OrderPrice、OrderDate、Street、City、State、Country、およびZipCodeフィールドが含まれています。[出力フィールド]パネルには、CompanyName(文字列)、Orders(配列)、およびTotalOrderPrice(倍精度)というフィールドを持つ1つの出力グループが含まれています。Orders配列には、OrderPrice(倍精度)、OrderDate(文字列)、Items(配列)、およびOrderAddress(構造)というフィールドが含まれています。
このマッピングでは、データソースは注文と項目のデータを含むJSONファイルです。データは、注文情報を含んだ別のJSONファイルに渡されます。[階層プロセッサ]トランスフォーメーションが選択されており、[階層プロセッサ]タブに受信データと出力データの構造が表示されています。
詳細については、階層プロセッサトランスフォーメーションを使用した階層出力の定義を参照してください。

階層からフラット化済みのデータ処理

階層プロセッサトランスフォーメーションには、出力データに対する[フラット化済み]オプションが含まれています。[フラット化済み]出力形式を使用して、階層入力を非正規化出力に変換します。
階層データをフラット化済みデータに変換するマッピングでは、1つの階層入力グループから読み取りを行って、1つのフラット化済み出力グループに書き込むことができます。プリミティブフィールド、構造体、配列からデータを読み取り、完全に非正規化した出力ファイルをすばやく作成できます。受信フィールドの一部のみをフラット化および非正規化することもできます。
兄弟配列を含むデータソースの場合、複雑な結合を必要とせずに、出力データを簡単に非正規化できます。必要な受信フィールドの横にあるチェックボックスをオンにします。階層プロセッサトランスフォーメーションは、フィールドを出力に追加し、式を自動的に作成します。
次の図に、階層プロセッサトランスフォーメーションを使用して階層データをフラット化したデータに変換するマッピングを示します。
[階層プロセッサ]タブが表示され、[出力形式フラット化済み]が選択されています。[受信フィールド]パネルには、次のフィールドを持つ1つの入力グループが表示されます: 選択済みのpeople(array)、未選択のpersonal(struct)、選択済みのvehicles(array)。vehicles配列には、type、model、およびcompanyとpolicy_numフィールドを持つinsurance(struct)が含まれています。[出力フィールド]パネルには、type、model、company、policy_num、date、desc、costの文字列フィールドを持つ1つのOutputグループが含まれています。
このマッピングでは、データソースは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.
エラーを解決するには、複数のマッピングを作成して複合データを段階的に処理するか、マッピングのサイズを小さくします。