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