こんにちは。ETLツール(とガンダム)を勉強中のエンジニアの庄子です。
Talend Open Studio for Data Integration(以下、TOSと表記)を使用して、Excelデータの取り込み処理を作成してみます。前回の準備編の続きとなります。では早速いってみましょう。
※今回、ガンダムの話は一切出てきません。今週は宇宙を舞台に賞金稼ぎをするカウボーイのアニメを観ちゃったので…。
今回の目標
Excelデータを準備し、そのデータをTOSから読み込んで画面に表示する処理を作りたいと思います。
画面に表示さえ出来れば、出力先をデータベースへ変更することはそれほど難しいことではありません。
入力データの準備
処理を単純にするために、下記のようなExcelシートを想定してみます。
Excel上のデータタイプは、文字列型ではなくそのまま日付と時間にしています。
入力のデータ型を意識することは後々重要になってきますので、きちんと設定すると後々楽になります。
これを適当なフォルダに保存しておきます。
ジョブの作成
TOSの画面に戻り、新規ジョブを作成します。
これでジョブが作成されました。ジョブを開くと以下のような画面が表示されます。
真ん中の広いキャンバスに、コンポーネントを配置してジョブを作っていく感じです。
メタデータ定義
では早速ジョブの中身を作っていきますが、その前にメタデータというものを定義します。ジョブに登場するファイルやデータベースなどの定義情報を登録する作業になります。コンポーネント自体にも接続情報などを持っていますので、メタデータ定義は必須作業ではないのですが、メタデータを定義しておくと、そこからコンポーネントを作成できるため、情報の再利用が可能になります。
今回はまず取り込むExcelファイルを定義したいと思います。下記の画面の通り「Excelファイルの作成」を選択します。
名前は適当につけておきます。
次に取り込むExcelファイルとシートを選択します。下記の画面を参考にしてください。
Excelデータにはタイトル行があるので、1行目をスキップさせます。
プレビューでスキップされているか確認します。
次にスキーマを登録します。
TOSには「スキーマ」という単語がよく出てきますが、TOS上で扱うデータ列の情報のことです。下記の画面では、このExcelデータから取得したデータを、TOS上でどのように扱うかを設定します。
TOSの内部では、ジョブを全てJavaコードに置換しています。つまりスキーマ情報はJavaの変数の型を決めることになります。今回は全てDate型になりますので、各列のタイプを「Date」へ変更し、パターンをデータにあわせて定義しました。これでExcelデータのメタデータ定義は完了です。
コンポーネント配置
では作成したExcelデータを使用してコンポーネントをジョブに配置して、ジョブを作ってみます。
作成したメタデータから、Excelファイルをジョブへドラッグ&ドロップします。そうすると入力コンポーネントにするのか出力コンポーネントにするのか聞かれるので、入力(tFileInputExcel)を選択します。
続いて下記の画面のように、「tLogRow」コンポーネントを配置します。これは入力データを画面コンソールに出力するコンポーネントで、デバッグするときに便利です。
この2つのコンポーネントを線で結びます。下記画面のように「メイン」という線で結びます。「メイン」はデータの流れを定義できます。
実行!
では実行して結果を確認してみます。画面下の「実行」タブにある実行ボタンを押すと、ジョブが開始されます。
Excelデータが実行コンソールに出力されました。ちゃんと出ましたね。
感想
ここまでで、Excelファイルからの入力を試すことができました。次回は、フォルダのExcelファイルを順次取り込む処理と、データベース登録処理についてご紹介したいと思います。
これからもETLツール(とガンダム)のお勉強がんばります。