2013/09/24

[TOSDI]Talend Open Studio for Data Integration その2

前回はTalend Open Studio for Data Integration(以下TOSDI)がどんなアプリケーションであるかの概要を紹介させていただきました。
簡単におさらいすると、「EclipseベースのGUIを備えたJavaで動く無償のETLツール」です。

今回は「基本的な操作がいかに簡単か」を紹介したいと思っています。



.

インストール

インストールも非常に簡単で、ウィザードに従っていればできてしまいます。
インストール直後からほぼ作業に入れると思ってください。


画面構成

ジョブを作る画面はこんな感じです。


左側のペインはリポジトリ。メタデータや保存されたジョブデータが格納されます。
中央上段はジョブを編集するための作業スペース、その右側のパレットは各種空パーツの引き出しです。
その下段はジョブ、コンポーネントのプロパティを編集したり実行、デバッグなどを行うための機能が集結しています。

今回の流れ

RDBMSからデータを取得してRDBMSにデータを入れるというのを試します。
流れを見ていただくだけなのでデータソースとロード先は同じサーバー同じデータベース内の別のテーブルにします。
またシンプルにお見せするため、今回は加工せずにそのままのデータをロードします。
よってテーブル構造はデータソースとロード先で同じです。
本来であれば「Oracleから取得してMySQLに入れる」というようなことをやれればよかったのですが、操作方法が伝わればよいと思いMySQLだけにしました。

なお、動画はHDになっていますが、一本一本が短いのでHDに切り替わる前に終わってしまうかも。
文字とかが見づらい場合はHDに変わってから最大化して再生しなおしてください。

DBConnectionを作る

Metadataの中にMySQLのサーバーへの接続情報を保存します。
といってもウィザードに従ってサーバー名、ユーザー名、パスワード、デフォルトスキーマを入力するだけです。
なお、ここの接続は特に言及がないかぎりJDBC接続になり、JDBCドライバはすでに入っているのでダウンロードしてくる必要はありません。

ここで操作している内容

  1. 「DB Connections」を右クリックして「Create Connection」を選択します。
  2. 任意の名前をつけて次へ進みます。(本来は「Purpose(目的)」や「Description(説明)」を適切に入力してください。)
  3. 「DB Type」で接続する先のDBMS種別を選択します。
  4. ログイン名、パスワード、サーバー名、Schemaなどを入力すると、接続文字列が生成されます。
  5. 一通り入力したら「チェック」でテスト接続して「成功しました」が出るのを確認します。


Schemaを取得する

DBに接続できたら今度はテーブル定義などを引っ張りだします。
ここはマウスの操作だけで完結できます。
このツールで使う予定のないテーブルに関しては取得する必要がありません。

ここで操作している内容

  1. 作成したConnectionを右クリックして「スキーマ情報の取得」を選択します。
  2. ここではフィルタなしで次へ進んでいます。接続先にテーブルが大量にあるとわかっている場合はフィルタを使いましょう。
  3. スキーマの下にテーブル/ビューがならぶので必要なものにチェックを入れて「次へ」進みます。
  4. テーブル定義の確認画面になります。列ごとにどういうカラムタイプであり、Javaのどの型で受け取るかを設定できます。
    ここではMySQLのDATETILE型を受け取る際の日付パターンを「dd-MM-yyyy」から「yyyy-MM-dd'T'HH:mm:ss」に変更しています。

日付時刻型の受け取りや日付パターンについては別途記事にしますので、ここでは詳細は割愛させていただきます。

あと、これは私の感覚ですが、メタ情報が増えるとアプリが重たくなるので、出来る限り必要最低限のテーブル、ビューだけを登録しておくようにしましょう。


Jobを作る

データソースとロード先のテーブルをドラッグ&ドロップし、マウスで線を引きます。
より直感的なインターフェイスです。

ここで操作している内容

  1. 「Job Designs」を右クリックして「ジョブの作成」を選択します。
  2. 任意の名前をつけて「終了」をクリックします。(本来は「Purpose(目的)」や「Description(説明)」を適切に入力してください。)
  3. ジョブ編集画面が開きます。
  4. 取得したsource1テーブルドラッグ&ドロップしてジョブエディタに乗せます。
  5. コンポーネントを選択する画面が開くのでここでは「tMysqlInput」を選択します。
    コンポーネントの「Input」はETLのExtract(抽出)、「Output」はETLのLoad(ロード)に相当すると思ってよいと思います。
  6. source1から期待する値が取得できるかを確認するために、パレットの「Logs & Errors」のなかから「tLogRow」をジョブエディタに乗せます。自動で「tLogRow_1」という名前がつきます。
    「tLogRow」は渡されたデータをコンソールに出力する機能があります。
  7. source1から右クリックしてtLogRow_1にドラッグ&ドロップしてrow1のデータコネクタを作ります。
  8. 「実行」タブの「Debug Run」を開いて「トレースデバッグ」をクリックします。
  9. source1から1行ずつ値が取り出されてtLogRow_1に引き渡されるのですが、row1上をどういう値が通過しているかがステージ上に表示されます。(これはトレースデバッグの場合のみです)
    tLogRow_1の効果でコンソール(ボタンの下)にも値が表示されています。
  10. トレースデバッグは1行ずつ表示してゆくので終わるまで待っていられません。「強制終了」でとめます。
  11. source1から期待する値が取得できるかを確認できたことにし、tLogRow_1を削除します。
  12. 今度はロード先のテーブルとしてdestination1をジョブエディタにドラッグ&ドロップします。
  13. コンポーネントを選択する画面が開くのでここでは「tMysqlOutput」を選択します。
    「tMysqlOutputBulkExec」の方が高速なのですが、今回は他RDBMSとの画面上の互換性のある「tMysqlOutput」にします。
  14. source1から右クリックしてdestination1にドラッグ&ドロップしてrow1のデータコネクタを作ります。
  15. destination1をクリックして選択し、Componentタブを開きます。
  16. 「テーブル操作」で「テーブルのクリア」を選択します。
    こうしておくと、データをロードする前に「TRUNCATE TABLE」してくれます。
  17. 念のためこの状態でもう一度トレースデバッグします。
    例えば二つのテーブルの列の型に差異がある場合などはここでエラーになります。
  18. 問題ないとわかったら「実行」します。
  19. 完了するとコンソールに「終了しました」が表示され、row1の上に表示される数字が緑になります。
    ここでは7.97秒かかって55555行ロードしたことがわかります。

今回使ったデータは「なんちゃって個人情報」で生成したデータです。

今回扱ったsource1とdestination1というテーブルは構造が全く同じものですが、テーブル構造が違う場合は抽出時のSQL文を変更するか、途中で加工する必要があります。
どちらの方法も簡単なのですが、後者の方がETLツールっぽい感じですね。
具体的な方法はいずれ紹介します。


おわり

いかがでしょう。
「まったく簡単だ」と思っていただけたでしょうか。

今回はtLogRowでデータを確認したりトレースデバッグしたりしているのですが、これらを省略すればトータル1分半くらいで出来てしまいます。(省略しなくても約2分。)


ということでTalend Open Studio for Data Integration の紹介編はこれで終わりです。
次回以降はより細かいところやトラブルシュートをちまちま書いていきたいと思います。


Talend Open Studio for Data Integration関連エントリまとめ

.

0 件のコメント:

コメントを投稿