Talend

Contents

Talendとは

TalendはETLツール群の一種で、データソースからデータを取り出し、加工し、データベースに格納するプログラムをGUIデスクトップアプリケーションで作成できる。出力されるプログラムはJavaのjarファイルであるので、Windows / Macのデスクトップアプリケーションで出力後、Linuxサーバにコピーすれば、Java実行環境のあるLinux上でバッチプログラムとして実行可能である。

有償、無償のものを含めて複数の製品があるが、ここでは無償でかつ、オープンソースのTalend Open Studio for Data Integrationを扱う。

無償版ではエンタープライズ向けの機能の一部が使用できないが、永久に無償で使用可能で、業務用途でも使用可能である。

公式サイト:https://jp.talend.com/products/data-integration/data-integration-open-studio/

 

評価

使用してみた所感。

確かにGUIでデータ処理バッチを作成できるが、RDBMSを扱うなら一定のSQLの知識が必要で、ノンプログラミングで開発可能とは言い切れない。また、覚える必要がある規則が多くあり、簡単に使用開始できるということもない。

また、データソースが1つの場合、ETLツールを使うよりプログラムを書いたほうが開発・保守ともに生産性が高いように思える。データソースが多種類の場合、その差をあまり意識せずにデータ処理に集中できるのは良い。

複雑な分岐がある場合、処理フローがわかりやすいGUIツールは良いかもしれない。

 

使用方法

基本はパレットから実行したいコンポーネントを配置し、各コンポーネントをリンクして最後に実行する

画面の要素

リポジトリ

作成した成果物を管理する

 

デザインワークスペース

実行するコンポーネントを配置してジョブを設計する

 

コンフィグレーションタブ

配置したコンポーネントの詳細を設定する。設定時にテキストフィールドにはダブルクォーテーションで囲って入力すると文字列として扱われ、ダブルクォーテーションで囲わないと、Java変数として扱われる。文字列のエスケープはJavaと同じである。

 

パレット

コンポーネントのリストが表示される。デザインワークスペースにはここからコンポーネントをドラッグして配置する。

 

プロジェクトの作成

最初にプロジェクトを作成する必要がある

参照:https://help.talend.com/reader/QfepFiIJO_6eLiY1WN~6mQ/dNnhZ83D7dj5h39TIwngKg

 

コンポーネントの接続

コンポーネント間の接続にはいくつかのパターンがある

参考:https://help.talend.com/reader/RpIZs9~SFHdMENe49Qc4iw/uKvHm5u728ReQdr8KJTSFg

 

Row(行)接続

メイン

データフローを1つのコンポーネントから他のコンポーネントに渡し、各行で反復し、コンポーネントプロパティ設定(スキーマ)に基づいて入力データを読み取ります。

メイン行で転送されるデータは、入力ファイルのデータ構造を説明するスキーマ定義によって特徴付けられます。

 

反復接続

反復接続は、ディレクトリに含まれているファイル、ファイルに含まれている行、またはDBエントリで、ループを実行するために使用します。

 

トリガー接続

トリガー接続は処理シーケンスを定義するもので、接続によりデータが処理されることはありません。

使用中の接続によってジョブとサブジョブ間に依存性が作成され、トリガーの性質に基づいて順次トリガーされます。

 

コンポーネントがOKの場合

[OnComponentOK] では、ソースコンポーネントの実行がエラーなしで完了した場合にターゲットコンポーネントがトリガーされます。通知サブジョブのトリガーなどが主な用途となります。

 

コンポーネントがエラーの場合

[OnComponentError]は、プライマリ―ジョブでエラーが検出されるとすぐに、サブジョブまたはコンポーネントをトリガーします。

 

Run if

Run ifは、定義した条件が満たされた場合にサブジョブまたはコンポーネントをトリガーします。Run if の詳細は、[Run if] 接続設定を参照して下さい。

 

SQLの実行

SQLは「SQLテンプレート」コンポーネントを使用する

参考:https://help.talend.com/reader/9AFxwiW4BgOohfMpk6bnLA/KIhBeuysNU6JtsV8tWf7og

 

コンポーネント一覧

ELT

ELT (抽出、ロード、変換)は、データベースの使用、特にデータウェアハウジングにおけるデータ操作プロセスです。従来のETL (抽出、変換、ロード)モードとは異なり、ELTでは、データは抽出され、データベースにロードされてから、使用する前にデータベース内の保存された場所で変換されます。このデータはデータセットに従って一括で移行され、変換プロセスは、データがロー形式でターゲットDBMSにロードされた後に実行されます。これにより。ネットワークにかかる負荷が軽減され、より高いスループットがもたらされます。

参考:https://help.talend.com/reader/BUt0o_RQ8gl5ROt6X8wlRg/flLn4evc6rGSht7FzhhgMg

 

SQLTemplate

tSQLTemplate

任意のSQLを実行できる

参考:https://help.talend.com/reader/NNO~fmVQU4rlkF9Depfdxw/gzyJdnjceK0JAK75Vv2H9g

 

データベース

DB Specfics

MySQL

tMysqlConnection

MySQLデータベースに接続してトランザクションを始める。

接続先は基本設定から行う。接続にSSLを使用する場合は、追加のJDBCパラメーターに以下を追加すること

&useSSL=true

 

tMysqlInput

所定の列を読み込む。次のコンポーネントにデータを渡すためにスキーマも定義する必要がある。

参考:https://help.talend.com/reader/NNO~fmVQU4rlkF9Depfdxw/3Fqzte0UWXDOcBxURdu9gg

 

tMysqlOutputBulk

読み取った各行をファイルに出力する。

参考:https://help.talend.com/reader/NNO~fmVQU4rlkF9Depfdxw/a04nyIMZD4YFa_poF~QArA

 

サーバでのバッチ実行

Linuxの環境設定

参考:https://help.talend.com/reader/JV3ixkfa0FRfaISH70356A/7dRh4xB1ez3Ho1NlnaiQRQ


Notice: Trying to get property 'queue' of non-object in /usr/local/wordpress/wp-includes/script-loader.php on line 2876

Warning: Invalid argument supplied for foreach() in /usr/local/wordpress/wp-includes/script-loader.php on line 2876