Talendファイル操作について

 


🌱 Talendでファイルを読み込む方法

🎯 目的

  • CSVファイル(sales.csv)を読み込み、その内容をコンソールに表示する方法を学びます。

  • 使用するコンポーネント:

    • tFileInputDelimited: ファイルを読み込む

    • tLogRow: コンソールに表示


🧩 手順:ファイルを読み込むジョブを作成

1. メタデータでファイル情報を定義

まず、「Repository」にある「Metadata」を使って、読み込むファイルの情報を定義します。

  1. 「Metadata」「File delimited」を右クリック → 「Create File delimited」

  2. ファイル名やオプション情報を入力し、Nextをクリック。

  3. 例えば「sales.csv」ファイルを選択。プレビューが表示され、ファイルの内容(列名とデータ)が確認できます。

2. ファイルの設定を確認・修正

  • 区切り文字(セパレータ)を確認します。デフォルトではセミコロン(;)が区切り文字として設定されていますが、CSVファイルはカンマ(,)区切りなので、これを変更します。

  • 「Set heading row as column names」を選択すると、ヘッダー行(列名)を自動的に認識します。

  • プレビュー画面を更新すると、列名が正しく反映されます。

3. スキーマの定義

次に、読み込むデータのスキーマ(構造)を定義します。

  1. 「SalesSchema」という名前でスキーマを作成します。

  2. 列1(store)のデータ型は「String」。

  3. 列2(date)のデータ型は「Date」。ここで、日付フォーマット(例:yyyy-MM-dd)を指定します。Talendの「Ctrl + Space」で日付フォーマットを選べます。

  4. 列3(sales)のデータ型は「Float」。ここでは、数値が小数点を含むので「Float」で設定します。

スキーマ設定が完了すると、これでファイルを正しく読み込む準備が整います。

4. tFileInputDelimitedを使ってファイルを読み込む

次に、作成したファイルの設定を使って、ジョブにtFileInputDelimitedコンポーネントを追加します。

  1. 「Metadata」で作成したファイルをドラッグ&ドロップして、tFileInputDelimitedに変換します。

5. データをコンソールに表示

  • tLogRowコンポーネントを追加し、モードを「Table」に変更します。

  • これで、読み込んだデータが表形式でコンソールに表示されるようになります。

6. コンポーネントを接続

  • tFileInputDelimitedからtLogRowへデータを接続します。

  • 必要に応じて、サブジョブ名(例:「read sales.csv」)を付けておきます。


▶️ 7. 実行して結果を確認

  1. ジョブを実行すると、「xx行処理されました」というメッセージが表示されます。

  2. コンソールでは、ファイルの内容(store, date, sales)が表形式で表示されます。

  3. 実際のファイルと照らし合わせて、データが正しく読み込まれているか確認します。


✅ 結果

ファイルは無事に読み込まれ、コンソールに次のような出力が表示されるはずです:

| store | date | sales |
|-----------|------------|---------| | Store 1 | 2023-01-01 | 100.50 | | Store 2 | 2023-01-02 | 200.75 | | ... | ... | ... |



🌱 Talendでファイルに書き込む方法

🎯 目的

  • サンプルデータを生成し、それをExcelファイル(customers.xlsx)に書き込む方法を学びます。

  • 使用するコンポーネント:

    • tRowGenerator: サンプルデータを生成

    • tFileOutputExcel: Excelファイルに書き込む


🧩 手順:Excelファイルへの書き込みジョブを作成

1. 新しいジョブの作成

  1. Talend Studioを開き、新しいジョブを作成します。

  2. 今回のジョブでは、tRowGeneratortFileOutputExcelの2つのコンポーネントを使用します。

2. tRowGeneratorでデータを生成

  • tRowGeneratorをダブルクリックして、そのエディタに入ります。

  • 5つの列(id、first name、last name、birth date、country)を設定し、サンプルデータを生成します。

    1. id:整数型(Integer

    2. first name、last name、country:文字列型(String

    3. birth date:日付型(Date

列ごとの関数設定:

  • id列には「Numeric.sequence」関数を使い、連番を生成します。

  • first name列には「TalendDataGenerator.getFirstName」を使い、ランダムな名前を生成します。

  • last name列には「TalendDataGenerator.getLastName」を使い、ランダムな姓を生成します。

  • birth date列には「TalendDate.getRandomDate」を使い、ランダムな日付を生成します(1920年〜2008年の間)。

  • country列には、カスタム値を定義して、ランダムに国コード(例:USA、GER、ESP)を選ばせます。

次に、生成する行数を設定します。ここでは「1,000〜30,000」の間でランダムに行を生成します。

3. tFileOutputExcelでExcelに書き込む

  • tFileOutputExcelコンポーネントを使って、データをExcelファイルに書き込みます。

  • 書き込むファイルの場所と名前を設定します(例:Talend/data/out/customers.xlsx)。

  • Excel形式を選択し、以下のオプションを有効にします:

    • ヘッダーを含める

    • 各列の自動サイズ調整

4. ジョブを接続する

  • tRowGeneratorからtFileOutputExcelへ接続します。

  • サブジョブ名(例:write Excel file)を設定して、ジョブを整理します。

5. ジョブを実行

  • F6キーを押してジョブを実行します。

  • 実行後、指定した出力ディレクトリ(Talend/data/outcustomers.xlsxファイルが作成されます。


📁 出力結果の確認

  1. customers.xlsxファイルを開くと、次のようなサンプルデータが表示されます:

    • idfirst namelast namebirth datecountry の5つの列があり、データがランダムに入力されています。

  2. ExcelファイルをLibreOffice Calcなどで開き、データが正しく書き込まれていることを確認します。


✨ 追加の設定:日付フォーマットの変更

もし日付フォーマットを変更したい場合、次の手順を行います:

  1. tRowGeneratorコンポーネントで、エディタではなく「Edit schema」を開きます。

  2. 日付のパターンを変更し、別のフォーマットを選択します(例えば、スラッシュ(/)区切りの日付形式)。

  3. 変更を保存し、再度ジョブを実行すると、新しいフォーマットでExcelに書き込まれます。


✅ 結果

  • 新しいcustomers.xlsxファイルがTalend/data/outに保存され、ランダムに生成されたデータが表示されます。

  • 日付フォーマットの変更を反映させることもできます。



🌱 Talendでファイルを繰り返し処理する方法

🎯 目的

  • ディレクトリ内のファイルを繰り返し処理する方法を学びます。

  • 今回は、tFileListコンポーネントを使って、特定のパターン(例:address*.csv)にマッチするファイルを繰り返し処理します。


🧩 手順:ファイルを繰り返し処理するジョブを作成

1. 新しいジョブの作成

  • Talend Studioを開き、新しいジョブを作成します。

  • ジョブ名を「iterateFiles」として設定します。

2. コンポーネントの設定

  • 使用するコンポーネント:

    1. tFileList(ファイルのリストを取得)

    2. tFixedFlowInput(ファイル名を表示)

    3. tLogRow(コンソールに出力)

3. tFileListの設定

  • tFileListコンポーネントをダブルクリックして設定を開始します。

  • ディレクトリの設定

    • ファイルを検索するディレクトリを指定します(例:Talend/data/in)。

  • ファイルパターンの設定

    • ファイルパターン(例:address*.csv)を設定します。このパターンに一致するファイルがリストに含まれます。

設定例:

  • Talend/data/in フォルダ内の address*.csv に一致するファイルを検索します。

4. tFixedFlowInputの設定

  • tFixedFlowInputコンポーネントをダブルクリックして設定します。

  • スキーマの設定

    • 少なくとも1つの列(例:fileName)を作成します。

  • 値の設定

    • tFileListコンポーネントから変数を取得して、fileNameに設定します。取得する変数は「CURRENT_FILE」です。

    • Outlineパネルを使って、tFileListの変数「CURRENT_FILE」を確認します。

5. tFileListtFixedFlowInputを接続

  • イテレーション接続

    • tFileListコンポーネントを右クリックし、「Row -> Iterate」を選択します。

    • これをtFixedFlowInputコンポーネントに接続します。

6. tLogRowの設定

  • tLogRowコンポーネントを使用して、各ファイル名をコンソールに表示します。

  • 出力モードは「Basic」を選択します。これにより、ファイル名だけが表示され、余計なテーブル情報は出力されません。

7. ジョブを実行

  • ジョブを実行すると、tFileListがディレクトリ内のファイルを検索し、各ファイル名が1行ずつコンソールに表示されます。

実行結果:

  • xx個のファイルが見つかり、1行1ファイル名が表示されます。

  • 例えば、address1.csvaddress2.csv、... のようにファイル名が表示されます。


📁 ファイルパターンの変更

もし、別のファイル(例:address6.csv.copy)を含めたければ、ファイルパターンを変更できます。

例えば、次のように設定できます:

  • address*.csv* というパターンを使えば、address6.csv.copy のようなファイルも含まれるようになります。


✅ 結果

  • tFileListで指定したパターンにマッチするファイルを順番に処理できます。

  • 各ファイルの名前をtFixedFlowInputtLogRowで表示し、繰り返し処理が実行されます。




🌱 Talendでファイルを1つにまとめる方法

🎯 目的

  • 複数のCSVファイルを1つのExcelファイルに統合するプロセスを作成します。

  • 統合する際に、Excelファイルが上書きされずに新しいデータが追加されるようにします。


🧩 手順:小さなファイルを1つのExcelに統合する

1. 新しいジョブの作成

  • 新しいジョブを作成し、ジョブ名は「fileScenario」とします。

2. 1つのファイルを読み込む

  • tFileInputDelimitedコンポーネントを使用して、最初のCSVファイル(例:address6.csv)を読み込みます。

  • tLogRowコンポーネントを使って、その内容をコンソールに表示します。

  • ファイルの構造を確認して、問題がないことを確認します。

3. ファイルを繰り返し処理するための設定

  • tFileListコンポーネントを使って、指定したディレクトリ(例:Talend/data/in)内のCSVファイルを繰り返し処理します。

  • ファイル名のパターンを**address*.csv**として設定し、すべてのCSVファイルを処理対象とします。

設定例:

  • ディレクトリTalend/data/in

  • ファイルパターンaddress*.csv

4. tFileListtFileInputDelimitedの接続

  • tFileListからファイル名を取得し、各ファイルをtFileInputDelimitedコンポーネントで読み込みます。

  • ファイルパスをtFileListから動的に取得するため、Change to built-in propertyを選択し、CURRENT_FILEという変数を使用します。

5. 読み込んだデータをExcelに書き込む

  • tFileOutputExcelコンポーネントを使って、Excelファイル(address.xlsx)に書き込みます。

  • Write Excel xx file format」、「Include header」、「Append existing file」のオプションを有効にし、データを追加で書き込む設定にします。

設定例:

  • ファイル出力先Talend/data/out/address.xlsx

  • オプション

    • Write Excel xx file format

    • Include header

    • Append existing file」(これにより、ファイルが追加されます)

6. ファイルが既に存在する場合の処理

  • Excelファイルが既に存在する場合、それを削除してから新しいデータを書き込むようにします。

  • tPreJobコンポーネントを使って、ジョブの実行前にファイルの存在を確認します。

  • tFileExistコンポーネントでファイルが存在するかをチェックし、もし存在すればtFileDeleteコンポーネントで削除します。

設定手順:

  1. tPreJobコンポーネントを使ってジョブ実行前にファイルの存在を確認。

  2. tFileExistでファイルの存在を確認し、tFileDeleteで削除する設定。

7. コンテキスト変数の使用

  • ファイル名を毎回手動で入力する代わりに、コンテキスト変数を使用して、同じファイル名を参照します。

  • targetFileという変数を作成し、その変数をtFileOutputExceltFileExisttFileDeleteのすべてで使用します。

設定手順:

  1. コンテキスト変数を作成(例:targetFile)。

  2. tFileOutputExceltFileExisttFileDeleteでこの変数を参照。

8. ジョブの実行

  • ジョブを実行すると、CSVファイルが1つずつExcelファイルに追加されていきます。

  • ファイルが既に存在すれば削除され、新しいファイルが作成されます。

実行結果:

  • 初回実行時にCSVファイルのデータがExcelに書き込まれ、2回目以降は新しいデータが追加されます。


📁 補足

  • tFileListコンポーネントは、指定したディレクトリ内の複数のファイルを処理する際に非常に便利です。

  • tFileOutputExcelの「Append existing file」オプションを使うことで、同じExcelファイルにデータを追加することができます。

  • tPreJobtFileExistを使うことで、ファイルが存在するかどうかをチェックし、必要に応じて削除することができます。


この手順を実行すれば、複数のCSVファイルを1つのExcelファイルに統合するプロセスが実現できます!

前の記事:Talendプロパティについて

次の記事:Talendデータベース操作について