ETL ツール (Talend) を使用してデータ統合プロセスを作成しようとしています。
私が直面している課題は、さまざまなソース (さまざまな形式) から単一の形式にデータを取り込もうとするときです。
ソースの列名と構造 (順序、データ型など) が異なる場合があります。つまり、メタデータが異なります。私が見る限り、それは非常に一般的なケースです。ただし、このツールは動的マッピング機能を提供しないため、これを処理できません。
そのようなシナリオを処理するための最良のアプローチは何ですか?
ETL ツール (Talend) を使用してデータ統合プロセスを作成しようとしています。
私が直面している課題は、さまざまなソース (さまざまな形式) から単一の形式にデータを取り込もうとするときです。
ソースの列名と構造 (順序、データ型など) が異なる場合があります。つまり、メタデータが異なります。私が見る限り、それは非常に一般的なケースです。ただし、このツールは動的マッピング機能を提供しないため、これを処理できません。
そのようなシナリオを処理するための最良のアプローチは何ですか?
Talend はダイナミック マッピング ツールを提供します。これは、XML データの tMap または tXmlMap と呼ばれます。
また、はるかに強力な tHMap (Hierarchical Mapping tool) もありますが、私が使用している Talend のバージョン (5.4) では非常に未加工ですが、5.5 ではより使いやすくなるため、まだまったく使用していません。
ここでの最善のアプローチは、各コンポーネントの後に tMap を使用してデータのスキーマを標準化することです。
最初に、出力スキーマがどのように見えるかを選択する必要があります (これは、現在のスキーマの 1 つと同じにすることも、必要に応じてまったく異なるものにすることもできます)。次に、スキーマをコピーして、各 tMap の出力テーブルに貼り付けます。次に、関連データをマッピングします。
ジョブの例は次のようになります。
各「ファイル」のスキーマと含まれるデータは次のとおりです (ファイルを読み取るのではなく、tFixedFlowInput コンポーネントを使用してデータをジョブにハードコーディングしていますが、前提は同じです)。
ファイル 1:
ファイル 2:
ファイル 3:
そして、最初の「ファイル」のスキーマに一致するようにマップされます。
ファイル 1:
ファイル 2:
ファイル 3:
スキーマをまったく同じに維持しているため、最初の tMap 構成がどのように変更されていないかに注目してください。
入力がすべて同じスキーマを共有するようになったので、tUnite コンポーネントを使用して (SQL のUNION
演算子のように) データを結合できます。
この後、最後のステップとして tReplace コンポーネントを使用して、「sex」フィールドをM
orに簡単に標準化できるようにしF
ます。
そして最後にそれをコンソールに出力しますが、これは利用可能な任意の出力コンポーネントに出力できます。
マッピングを事前に定義する必要のない真に動的なオプションの場合、動的スキーマを使用してすべてのデータを読み込む必要があります。次に、構造を解析して定義済みの出力にすることができます。
この場合、ファイルから動的スキーマ (単一列) としてデータを読み取り、それを一時データベース テーブルに直接ドロップできます。Talendは、元のファイルのヘッダーに従って列を自動的に作成します。
ここから、変換マッピング ファイルとデータベースのデータ ディクショナリを使用して、ソース列のデータを抽出し、それを出力列に直接マップできます。