【データマッピング】Talendによるデータ処理(2)
はじめに
こんにちは、前回はデータマッピングツールであるtalnedを使ってデータの読み込みから、反復まで実習してみますた。
今回は上記の過程から一歩進んで、データベースを接続し、読んで、書いて、繰り返す過程をより具体的に実習してみます。
データベース接続
まず、データベースまで到達するためにはコネクションを作成する必要があります。talendの右側にデータベースの種類を選んだ後、コネクションコンポーネントを作ります。
talendの左側のメタデータ項目でデータベース接続を設定します。
最初のデータベース設定でID、パスワード、サーバー、データベース名を入力した後、タイムゾーンを設定して接続テストを行います。
メタデータでmysqlLocalを選択した後、コネクションを作成します。
Prejob、DB接続、メッセージボックスの3つのコンポーネントを作成した後、ComponentOKで接続します。 その後、メッセージボックスで動作させてみると、DB接続されることが確認できます。
データベースへの書き込み
それでは、データベースに直接データを書いてみましょう。
File delimitedであらかじめ用意した自分のcsvファイルをtFileinputDelimitedコンポーネントで読み込みます。
データ接続中にmysqlLocalでtDButputを生成します。
commit, rollbackコンポーネントを作って連結します。この時、mysqlLocalコンポーネントを右クリックした後、triggerでcomoponentOkというタブを選択して連結します。
成功したらコミットして、失敗したらロールバックするためのコンポーネント配置です。
データベースからの読み込み
今回はデータベースからデータを読んでみましょう。メタデータでRead queriesを選択します。
メタデータのmysqlLocalで先ほどデータベースにデータを書き込む作業で生成されたsalesスキーマをクリックします。
salesコンポーネントを取得してデータ接続をチェックします。
ログコンポーネントをもう一つ生成して連結して実行してみると、データベースのsalesスキーマの中にあるデータが読み込まれます。
データの繰り返し
テーブルリスト、フロー入力、ログ、合計3つのコンポーネントを作ります。まず、テーブルリストコンポーネントでコネクションを設定します。
2つ目の作業。フロー入力コンポーネントをクリックしてスキーマを修正し、下図のように値に現在のテーブルリストを取得するメソッドを入力します。この時、テーブルリストでフロー入力コンポーネントを接続する時、必ずIterateで接続します。 (コンポーネントを右クリックして設定することができます)。
Sync columnsボタンをクリックして、ログコンポーネントがフロー入力コンポーネントから受け取るカラムを同じに合わせる作業を行います。
カラムが同じように揃いました。
これでログコンポーネントを実行してみると、データベースにあったcategoryテーブルとsalesテーブルが記録されたことが確認できます。
データベース処理シナリオ
これから本格的にデータを生成してデータマッピングをしてデータベースまで入れるシナリオを実装してみます。まず、上の図のようにジェネレータ、マップ、フロー入力、ログコンポーネントを作成します。
clients, countries, clients_out の3つの要素が見えます。
mapコンポーネントをクリックして、右上のAuto mapというタブをクリックすると、自動的にマッピングが完了します。
追加で作業してみると、clientsのcountryカラムをcountriesが参照できるようにマッピングしてくれます。
countriesでcountryNameをcustomer_outにドラッグして追加します。
countriesにmap settingで結合方式をInner joinに変更します。
全体的に完成したマッピング図です。
実行させてみると、ログにcustomer_outの結果値としてID、氏名、生年月日、国コード、国名が出てきます。 国コードと国名が接続されている情報を結果値に反映するために、これまでの作業を行ったのです。 (この作業をしなかったら、国コードは表示されなかったでしょう)
今度はログだけ記録するのではなく、実際のデータベースにログ記録を格納するようにします。 まず、mysqlLocalでDBOutputコンポーネントを生成した後、ログコンポーネントと連結させます。
mysqlLocalコンポーネントをクリックして、テーブル名、テーブルに対する動作方法(Drop table if exists and create)を選択し、Sync columnsをクリックしてログコンポーネントに記録されたカラムにテーブルのカラムを合わせます。
実行してみると、新しく生成されたcustomer_outテーブルに100個のレコードがデータベースに格納されたことが確認できます。
最後に
今までtalendを使って各種データの読み取り、書き込み、繰り返し、データベースへの格納まで総合的に実習してきました。 この実習で重要な2つを挙げるなら、データベースの接続方法と、テーブル間のマッピング方法でした。基本中の基本なので、この方法をしっかり理解するようにします。
エンジニアファーストの会社 株式会社CRE-CO
ソンさん
【参考】
[Udemy] Data Integration & ETL with Talend Open Studio Zero to Hero
この記事が気に入ったらサポートをしてみませんか?