Talend Open StudioでExcelデータをかき集める(実装編その1)

こんにちは。ETLツール(とガンダム)を勉強中のエンジニアの庄子です。

Talend Open Studio for Data Integration(以下、TOSと表記)を使用して、Excelデータの取り込み処理を作成してみます。前回の準備編の続きとなります。では早速いってみましょう。

※今回、ガンダムの話は一切出てきません。今週は宇宙を舞台に賞金稼ぎをするカウボーイのアニメを観ちゃったので…。

 

今回の目標

Excelデータを準備し、そのデータをTOSから読み込んで画面に表示する処理を作りたいと思います。

画面に表示さえ出来れば、出力先をデータベースへ変更することはそれほど難しいことではありません。

 

入力データの準備

処理を単純にするために、下記のようなExcelシートを想定してみます。

日付、開始時間、終了時間だけの簡単なもの

日付、開始時間、終了時間だけの簡単なもの

Excel上のデータタイプは、文字列型ではなくそのまま日付と時間にしています。

入力のデータ型を意識することは後々重要になってきますので、きちんと設定すると後々楽になります。

これを適当なフォルダに保存しておきます。

 

ジョブの作成

TOSの画面に戻り、新規ジョブを作成します。

ジョブは1つのプロジェクトに複数定義可能で、ジョブから別ジョブを呼ぶこともできます。

ジョブは1つのプロジェクトに複数定義可能で、ジョブから別ジョブを呼ぶこともできます。

色々項目ありますが空白で。

ジョブに名前を付けて完了!

これでジョブが作成されました。ジョブを開くと以下のような画面が表示されます。

真ん中の広いキャンバスに、コンポーネントを配置してジョブを作っていく感じです。

あ

コンポーネントは各種DB接続、ファイル操作などたくさん用意されています。

 

メタデータ定義

では早速ジョブの中身を作っていきますが、その前にメタデータというものを定義します。ジョブに登場するファイルやデータベースなどの定義情報を登録する作業になります。コンポーネント自体にも接続情報などを持っていますので、メタデータ定義は必須作業ではないのですが、メタデータを定義しておくと、そこからコンポーネントを作成できるため、情報の再利用が可能になります。

 

今回はまず取り込むExcelファイルを定義したいと思います。下記の画面の通り「Excelファイルの作成」を選択します。

あ

CSVの場合は「区切り記号付きファイル」です。

 

名前は適当につけておきます。

次に取り込むExcelファイルとシートを選択します。下記の画面を参考にしてください。

あ

右下にシート内データのプレビューが出ます。

 

Excelデータにはタイトル行があるので、1行目をスキップさせます。

プレビューでスキップされているか確認します。

a

日付型や時刻型のデータは、プレビューで観ても正しいのかどうかわかりづらい

 

次にスキーマを登録します。

TOSには「スキーマ」という単語がよく出てきますが、TOS上で扱うデータ列の情報のことです。下記の画面では、このExcelデータから取得したデータを、TOS上でどのように扱うかを設定します。

a

SimpleDateFormatクラスのフォーマットパターンかな?

TOSの内部では、ジョブを全てJavaコードに置換しています。つまりスキーマ情報はJavaの変数の型を決めることになります。今回は全てDate型になりますので、各列のタイプを「Date」へ変更し、パターンをデータにあわせて定義しました。これでExcelデータのメタデータ定義は完了です。

 

コンポーネント配置

では作成したExcelデータを使用してコンポーネントをジョブに配置して、ジョブを作ってみます。

作成したメタデータから、Excelファイルをジョブへドラッグ&ドロップします。そうすると入力コンポーネントにするのか出力コンポーネントにするのか聞かれるので、入力(tFileInputExcel)を選択します。

あ

もし、このファイルに出力する場合は、tFileOutputExcelを選択します。

 

続いて下記の画面のように、「tLogRow」コンポーネントを配置します。これは入力データを画面コンソールに出力するコンポーネントで、デバッグするときに便利です。

a

画面右上のテキストボックスからコンポーネントを検索することもできます。

 

この2つのコンポーネントを線で結びます。下記画面のように「メイン」という線で結びます。「メイン」はデータの流れを定義できます。

あ

このあたり、もっといい日本語なかったのかといつも思ってしまう。

 

実行!

では実行して結果を確認してみます。画面下の「実行」タブにある実行ボタンを押すと、ジョブが開始されます。

あ

エラーの場合、ここにJavaの例外メッセージが表示されます。

Excelデータが実行コンソールに出力されました。ちゃんと出ましたね。

 

感想

ここまでで、Excelファイルからの入力を試すことができました。次回は、フォルダのExcelファイルを順次取り込む処理と、データベース登録処理についてご紹介したいと思います。

これからもETLツール(とガンダム)のお勉強がんばります。



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ