簡単におさらいすると、「EclipseベースのGUIを備えたJavaで動く無償のETLツール」です。
今回は「基本的な操作がいかに簡単か」を紹介したいと思っています。
.
インストール
インストールも非常に簡単で、ウィザードに従っていればできてしまいます。インストール直後からほぼ作業に入れると思ってください。
画面構成
ジョブを作る画面はこんな感じです。左側のペインはリポジトリ。メタデータや保存されたジョブデータが格納されます。
中央上段はジョブを編集するための作業スペース、その右側のパレットは各種空パーツの引き出しです。
その下段はジョブ、コンポーネントのプロパティを編集したり実行、デバッグなどを行うための機能が集結しています。
今回の流れ
RDBMSからデータを取得してRDBMSにデータを入れるというのを試します。流れを見ていただくだけなのでデータソースとロード先は同じサーバー同じデータベース内の別のテーブルにします。
またシンプルにお見せするため、今回は加工せずにそのままのデータをロードします。
よってテーブル構造はデータソースとロード先で同じです。
本来であれば「Oracleから取得してMySQLに入れる」というようなことをやれればよかったのですが、操作方法が伝わればよいと思いMySQLだけにしました。
なお、動画はHDになっていますが、一本一本が短いのでHDに切り替わる前に終わってしまうかも。
文字とかが見づらい場合はHDに変わってから最大化して再生しなおしてください。
DBConnectionを作る
Metadataの中にMySQLのサーバーへの接続情報を保存します。といってもウィザードに従ってサーバー名、ユーザー名、パスワード、デフォルトスキーマを入力するだけです。
なお、ここの接続は特に言及がないかぎりJDBC接続になり、JDBCドライバはすでに入っているのでダウンロードしてくる必要はありません。
ここで操作している内容
- 「DB Connections」を右クリックして「Create Connection」を選択します。
- 任意の名前をつけて次へ進みます。(本来は「Purpose(目的)」や「Description(説明)」を適切に入力してください。)
- 「DB Type」で接続する先のDBMS種別を選択します。
- ログイン名、パスワード、サーバー名、Schemaなどを入力すると、接続文字列が生成されます。
- 一通り入力したら「チェック」でテスト接続して「成功しました」が出るのを確認します。
Schemaを取得する
DBに接続できたら今度はテーブル定義などを引っ張りだします。ここはマウスの操作だけで完結できます。
このツールで使う予定のないテーブルに関しては取得する必要がありません。
ここで操作している内容
- 作成したConnectionを右クリックして「スキーマ情報の取得」を選択します。
- ここではフィルタなしで次へ進んでいます。接続先にテーブルが大量にあるとわかっている場合はフィルタを使いましょう。
- スキーマの下にテーブル/ビューがならぶので必要なものにチェックを入れて「次へ」進みます。
- テーブル定義の確認画面になります。列ごとにどういうカラムタイプであり、Javaのどの型で受け取るかを設定できます。
ここではMySQLのDATETILE型を受け取る際の日付パターンを「dd-MM-yyyy」から「yyyy-MM-dd'T'HH:mm:ss」に変更しています。
日付時刻型の受け取りや日付パターンについては別途記事にしますので、ここでは詳細は割愛させていただきます。
あと、これは私の感覚ですが、メタ情報が増えるとアプリが重たくなるので、出来る限り必要最低限のテーブル、ビューだけを登録しておくようにしましょう。
Jobを作る
データソースとロード先のテーブルをドラッグ&ドロップし、マウスで線を引きます。より直感的なインターフェイスです。
ここで操作している内容
- 「Job Designs」を右クリックして「ジョブの作成」を選択します。
- 任意の名前をつけて「終了」をクリックします。(本来は「Purpose(目的)」や「Description(説明)」を適切に入力してください。)
- ジョブ編集画面が開きます。
- 取得したsource1テーブルドラッグ&ドロップしてジョブエディタに乗せます。
- コンポーネントを選択する画面が開くのでここでは「tMysqlInput」を選択します。
コンポーネントの「Input」はETLのExtract(抽出)、「Output」はETLのLoad(ロード)に相当すると思ってよいと思います。 - source1から期待する値が取得できるかを確認するために、パレットの「Logs & Errors」のなかから「tLogRow」をジョブエディタに乗せます。自動で「tLogRow_1」という名前がつきます。
「tLogRow」は渡されたデータをコンソールに出力する機能があります。 - source1から右クリックしてtLogRow_1にドラッグ&ドロップしてrow1のデータコネクタを作ります。
- 「実行」タブの「Debug Run」を開いて「トレースデバッグ」をクリックします。
- source1から1行ずつ値が取り出されてtLogRow_1に引き渡されるのですが、row1上をどういう値が通過しているかがステージ上に表示されます。(これはトレースデバッグの場合のみです)
tLogRow_1の効果でコンソール(ボタンの下)にも値が表示されています。 - トレースデバッグは1行ずつ表示してゆくので終わるまで待っていられません。「強制終了」でとめます。
- source1から期待する値が取得できるかを確認できたことにし、tLogRow_1を削除します。
- 今度はロード先のテーブルとしてdestination1をジョブエディタにドラッグ&ドロップします。
- コンポーネントを選択する画面が開くのでここでは「tMysqlOutput」を選択します。
「tMysqlOutputBulkExec」の方が高速なのですが、今回は他RDBMSとの画面上の互換性のある「tMysqlOutput」にします。 - source1から右クリックしてdestination1にドラッグ&ドロップしてrow1のデータコネクタを作ります。
- destination1をクリックして選択し、Componentタブを開きます。
- 「テーブル操作」で「テーブルのクリア」を選択します。
こうしておくと、データをロードする前に「TRUNCATE TABLE」してくれます。 - 念のためこの状態でもう一度トレースデバッグします。
例えば二つのテーブルの列の型に差異がある場合などはここでエラーになります。 - 問題ないとわかったら「実行」します。
- 完了するとコンソールに「終了しました」が表示され、row1の上に表示される数字が緑になります。
ここでは7.97秒かかって55555行ロードしたことがわかります。
今回使ったデータは「なんちゃって個人情報」で生成したデータです。
今回扱ったsource1とdestination1というテーブルは構造が全く同じものですが、テーブル構造が違う場合は抽出時のSQL文を変更するか、途中で加工する必要があります。
どちらの方法も簡単なのですが、後者の方がETLツールっぽい感じですね。
具体的な方法はいずれ紹介します。
おわり
いかがでしょう。「まったく簡単だ」と思っていただけたでしょうか。
今回はtLogRowでデータを確認したりトレースデバッグしたりしているのですが、これらを省略すればトータル1分半くらいで出来てしまいます。(省略しなくても約2分。)
ということでTalend Open Studio for Data Integration の紹介編はこれで終わりです。
次回以降はより細かいところやトラブルシュートをちまちま書いていきたいと思います。
Talend Open Studio for Data Integration関連エントリまとめ
.
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。