[Talend]複数のテーブルからカラムデータを取得し別テーブルへ登録する(ELTコンポーネント)

2016.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データをロードする際にETL処理してからRedshiftへロードするというパターンとオリジナルデータをそのままRedshiftやRDBへロードしてから必要なデータをかき集めてテーブルにデータを入れるというELT処理の2パターンがありますが、今回はその後者をやってみます。

動作させた環境

  • Talend Open Studio 6.1 for MACOS
  • 読み出し元D/B:仮想OS上のWindows7 on MySQL5.5

今回使用するコンポーネント

  1. tELTMysqlInput
  2. tELTMysqlMap
  3. tELTMysqlOutput

の3つのコンポーネントです

コンポーネントを配置してみる

  1. 3つのテーブルからデータを集約するので、tELTMysqlInputを3つ配置します
  2. 3つのテーブルから集約したものをマッピングして集約するのでtELTMysqlMapを配置します
  3. 最終的に必要なデータをテーブルへ書き出すためにtELTMysqlOutputを配置します

CMBlog11_1

コンポーネントのプロパティ定義を実施する

STEP1.関係線を定義します。(すべて メイン で定義します)
それぞれのコンポーネントのラベルをcity,country,countrylanguageに変更しました。

CMBlog11_2

STEP2.メタデータ/DB接続/接続するDB定義の部分で右クリックして「スキーマ情報の取得」を選択します。
CMBlog11_3

下記のようなウィンドウが開きます。
CMBlog11_4

Next > をクリックすると更に下記のようなウィンドウが開きます。
CMBlog11_5

3つのテーブルが存在していることが確認できますので、ここでは全て選択して Next > をクリックします。

CMBlog11_6

DBの情報を取得できたので Finish をクリックします。
CMBlog11_7

STEP3.それぞれ3つのtELTMysqlInputに対してプロパティを設定します。
下記のようにスキーマをリポジトリに変更し、 ・・・ をクリックして city を指定します。
CMBlog11_8

正しく設定が完了するとコンポーネント右上にある黄色いビックリマークアイコンが消えていることが確認できると思います。

CMBlog11_9

同じようにあと2つのコンポーネントのプロパティ設定 country,countrylanguage も設定します。

STEP4.tELTMysqlMapのプロパティを設定します。

tELTMysqlMapの ELT Mysqlマップエディタを立ち上げてマッピングの設定を行います。
エディタが立ち上がると下記のようなウィンドウが立ち上がります。

CMBlog11_12

右側上にある + ボタンをクリックし、出力テーブルの追加します。(ここでは aggregate_result にしています)
次に左側 + ボタンをクリックして 新規のエイリアスの追加を行います。

CMBlog11_13

今回は「3つのテーブルから結合し、出力結果をMySQLの別テーブルへ登録する」をやりたいので下記のようにcity,country,countrylanguageの3テーブル分エイリアスを追加します。
抽出したい条件は外部カラム式の部分に記載することが可能です。
また、出力テーブル(aggregate_result)側にはCreate_Atカラムを追加して、タイムスタンプが入るようにしています。

CMBlog11_14_1

STEP5.最後にtELTMysqlOutputのプロパティを設定します。

カラム同期をクリックした後、スキーマの編集をクリックすると下記のような画面が表示されます。

CMBlog11_16

DB定義に問題無いことを確認できたらデータ操作を 挿入 デフォルトテーブルを aggregate_result として設定します。

CMBlog11_17_1

※MySQL上に予めaggregate_resultテーブルは作成しておいて下さい。
CMBlog11_18_1

これでジョブの定義は完了しました。

ジョブを実行してみる

作成したジョブを早速実行してみます。

CMBlog11_18_2

ジョブが正常に終了し、134レコードが該当したことが確認できます。

MySQL側にも正しくデータが入っているかを確認。
CMBlog11_19_1

まとめ

とにかく早くDWHを立ち上げたいって要件の場合にはETL処理の設計を実施することが足かせとなり立ち上げるまでに時間を要することが考えられます。そう言う場合にはRAWデータをそのままDWHにロードしてしまうゴリ押しも必要になるケースがあります。あとRAWデータがDWH内にあるので、その時は不要だったデータが施策のPDCAを回しているうちに必要になってくるケースもあるかと思いますので良い面もありますが、デメリットとしては明らかに不要となるカラムデータもロードすることになってしまっているケースの場合はDWHのストレージ容量を圧迫することが挙げられます。