🌱 Talendでファイルを読み込む方法
🎯 目的
-
CSVファイル(sales.csv)を読み込み、その内容をコンソールに表示する方法を学びます。
-
使用するコンポーネント:
-
tFileInputDelimited
: ファイルを読み込む -
tLogRow
: コンソールに表示
-
🧩 手順:ファイルを読み込むジョブを作成
1. メタデータでファイル情報を定義
まず、「Repository」にある「Metadata」を使って、読み込むファイルの情報を定義します。
-
「Metadata」 → 「File delimited」を右クリック → 「Create File delimited」
-
ファイル名やオプション情報を入力し、Nextをクリック。
-
例えば「sales.csv」ファイルを選択。プレビューが表示され、ファイルの内容(列名とデータ)が確認できます。
2. ファイルの設定を確認・修正
-
区切り文字(セパレータ)を確認します。デフォルトではセミコロン(
;
)が区切り文字として設定されていますが、CSVファイルはカンマ(,
)区切りなので、これを変更します。 -
「Set heading row as column names」を選択すると、ヘッダー行(列名)を自動的に認識します。
-
プレビュー画面を更新すると、列名が正しく反映されます。
3. スキーマの定義
次に、読み込むデータのスキーマ(構造)を定義します。
-
「SalesSchema」という名前でスキーマを作成します。
-
列1(store)のデータ型は「String」。
-
列2(date)のデータ型は「Date」。ここで、日付フォーマット(例:
yyyy-MM-dd
)を指定します。Talendの「Ctrl + Space」で日付フォーマットを選べます。 -
列3(sales)のデータ型は「Float」。ここでは、数値が小数点を含むので「Float」で設定します。
スキーマ設定が完了すると、これでファイルを正しく読み込む準備が整います。
4. tFileInputDelimitedを使ってファイルを読み込む
次に、作成したファイルの設定を使って、ジョブにtFileInputDelimited
コンポーネントを追加します。
-
「Metadata」で作成したファイルをドラッグ&ドロップして、
tFileInputDelimited
に変換します。
5. データをコンソールに表示
-
tLogRow
コンポーネントを追加し、モードを「Table」に変更します。 -
これで、読み込んだデータが表形式でコンソールに表示されるようになります。
6. コンポーネントを接続
-
tFileInputDelimited
からtLogRow
へデータを接続します。 -
必要に応じて、サブジョブ名(例:「read sales.csv」)を付けておきます。
▶️ 7. 実行して結果を確認
-
ジョブを実行すると、「xx行処理されました」というメッセージが表示されます。
-
コンソールでは、ファイルの内容(
store
,date
,sales
)が表形式で表示されます。 -
実際のファイルと照らし合わせて、データが正しく読み込まれているか確認します。
✅ 結果
ファイルは無事に読み込まれ、コンソールに次のような出力が表示されるはずです:
🌱 Talendでファイルに書き込む方法
🎯 目的
-
サンプルデータを生成し、それをExcelファイル(customers.xlsx)に書き込む方法を学びます。
-
使用するコンポーネント:
-
tRowGenerator
: サンプルデータを生成 -
tFileOutputExcel
: Excelファイルに書き込む
-
🧩 手順:Excelファイルへの書き込みジョブを作成
1. 新しいジョブの作成
-
Talend Studioを開き、新しいジョブを作成します。
-
今回のジョブでは、
tRowGenerator
とtFileOutputExcel
の2つのコンポーネントを使用します。
2. tRowGenerator
でデータを生成
-
tRowGenerator
をダブルクリックして、そのエディタに入ります。 -
5つの列(id、first name、last name、birth date、country)を設定し、サンプルデータを生成します。
-
id:整数型(
Integer
) -
first name、last name、country:文字列型(
String
) -
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/out
)にcustomers.xlsx
ファイルが作成されます。
📁 出力結果の確認
-
customers.xlsx
ファイルを開くと、次のようなサンプルデータが表示されます:-
id、first name、last name、birth date、country の5つの列があり、データがランダムに入力されています。
-
-
ExcelファイルをLibreOffice Calcなどで開き、データが正しく書き込まれていることを確認します。
✨ 追加の設定:日付フォーマットの変更
もし日付フォーマットを変更したい場合、次の手順を行います:
-
tRowGenerator
コンポーネントで、エディタではなく「Edit schema」を開きます。 -
日付のパターンを変更し、別のフォーマットを選択します(例えば、スラッシュ(
/
)区切りの日付形式)。 -
変更を保存し、再度ジョブを実行すると、新しいフォーマットでExcelに書き込まれます。
✅ 結果
-
新しい
customers.xlsx
ファイルがTalend/data/out
に保存され、ランダムに生成されたデータが表示されます。 -
日付フォーマットの変更を反映させることもできます。
🌱 Talendでファイルを繰り返し処理する方法
🎯 目的
-
ディレクトリ内のファイルを繰り返し処理する方法を学びます。
-
今回は、
tFileList
コンポーネントを使って、特定のパターン(例:address*.csv
)にマッチするファイルを繰り返し処理します。
🧩 手順:ファイルを繰り返し処理するジョブを作成
1. 新しいジョブの作成
-
Talend Studioを開き、新しいジョブを作成します。
-
ジョブ名を「
iterateFiles
」として設定します。
2. コンポーネントの設定
-
使用するコンポーネント:
-
tFileList
(ファイルのリストを取得) -
tFixedFlowInput
(ファイル名を表示) -
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. tFileList
とtFixedFlowInput
を接続
-
イテレーション接続:
-
tFileList
コンポーネントを右クリックし、「Row
->Iterate
」を選択します。 -
これを
tFixedFlowInput
コンポーネントに接続します。
-
6. tLogRow
の設定
-
tLogRow
コンポーネントを使用して、各ファイル名をコンソールに表示します。 -
出力モードは「Basic」を選択します。これにより、ファイル名だけが表示され、余計なテーブル情報は出力されません。
7. ジョブを実行
-
ジョブを実行すると、
tFileList
がディレクトリ内のファイルを検索し、各ファイル名が1行ずつコンソールに表示されます。
実行結果:
-
xx個のファイルが見つかり、1行1ファイル名が表示されます。
-
例えば、
address1.csv
、address2.csv
、... のようにファイル名が表示されます。
📁 ファイルパターンの変更
もし、別のファイル(例:address6.csv.copy
)を含めたければ、ファイルパターンを変更できます。
例えば、次のように設定できます:
-
address*.csv*
というパターンを使えば、address6.csv.copy
のようなファイルも含まれるようになります。
✅ 結果
-
tFileList
で指定したパターンにマッチするファイルを順番に処理できます。 -
各ファイルの名前を
tFixedFlowInput
とtLogRow
で表示し、繰り返し処理が実行されます。
🌱 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. tFileList
とtFileInputDelimited
の接続
-
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
コンポーネントで削除します。
設定手順:
-
tPreJob
コンポーネントを使ってジョブ実行前にファイルの存在を確認。 -
tFileExist
でファイルの存在を確認し、tFileDelete
で削除する設定。
7. コンテキスト変数の使用
-
ファイル名を毎回手動で入力する代わりに、コンテキスト変数を使用して、同じファイル名を参照します。
-
targetFile
という変数を作成し、その変数をtFileOutputExcel
、tFileExist
、tFileDelete
のすべてで使用します。
設定手順:
-
コンテキスト変数を作成(例:
targetFile
)。 -
tFileOutputExcel
、tFileExist
、tFileDelete
でこの変数を参照。
8. ジョブの実行
-
ジョブを実行すると、CSVファイルが1つずつExcelファイルに追加されていきます。
-
ファイルが既に存在すれば削除され、新しいファイルが作成されます。
実行結果:
-
初回実行時にCSVファイルのデータがExcelに書き込まれ、2回目以降は新しいデータが追加されます。
📁 補足
-
tFileList
コンポーネントは、指定したディレクトリ内の複数のファイルを処理する際に非常に便利です。 -
tFileOutputExcel
の「Append existing file」オプションを使うことで、同じExcelファイルにデータを追加することができます。 -
tPreJob
とtFileExist
を使うことで、ファイルが存在するかどうかをチェックし、必要に応じて削除することができます。
この手順を実行すれば、複数のCSVファイルを1つのExcelファイルに統合するプロセスが実現できます!