見出し画像

【データマッピング】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


この記事が気に入ったらサポートをしてみませんか?