Talendとは
EclipseベースのGUIツールを用いて、様々なデータソースからデータを集約・統合するためのETLツールです。 このETLツールを使うことで、各種データソースと連携するプログラムなどを作成する手間を減らすことができるようになります。
Talend社からオープンソースとして提供されているTalend Open Studio for Data Integrationを利用して、Azure SQL Database へのデータのインポートとエクスポートを試してみます。
Talend Open Studioダウンロード: https://jp.talend.com/download/talend-open-studio?qt-product_tos_download=3&qt-product_tos_download_new=1
前提動作環境
動作環境は下記になります。
- Talend の環境
- Windows 8.1 64bit
- jdk-8u131-windows-x64.exe
- Azure SQL Database の環境
- 任意のデータベースを作成する
- 任意のデータベースに、テーブル名「test_table」作成する
- テーブル名「test_table」のスキーマは以下「※テーブルのスキーマ」のとおり設定する
※テーブルのスキーマ
カラム名:time で、 データ型:smalldatetime
カラム名:name で、 データ型:ntext
カラム名:age で、 データ型:smallint
Talendのインストール
Talend Open Studio for Data Integration v6.4.0をダウンロードして、インストールします。
プログラムは、zipファイルで提供されます。
ダウンロードしたら、任意のフォルダに解凍し、含まれる「TOS_DI~.win-x86_64.exe」をダブルクリックすると、ライセンスへの同意を求める画面が表示されます。
ライセンス同意後に表示されるプロジェクト作成画面で、新規プロジェクトを作成します。
プロジェクトを開いた後、新しくジョブを作成します。
Talendの利用方法
Talendでは、1つ1つの機能をコンポーネントというパーツで提供しており、そのコンポーネントを相互に組み合わせることで、処理のフローを記述することができます。
下図のとおり、以下の処理フローをTalend Open Studio for Data Integrationで作成していきます。
- JDBC経由でAzure SQL Databaseへのデータインポート
- JDBC経由でAzure SQL Databaseからデータ取得
- 確認のため、取得したデータを標準出力
以下で、各コンポーネントの設定方法を説明していきます。
JDBCドライバの設定
DB接続の共有設定のために、tJDBCConnectionコンポーネントを利用します。
SQL ServerのJDBCドライバをこちらからをダウンロードします。
tJDBCConnectionの設定
JDBCのURL:"jdbc:sqlserver://${Azure SQL DatabaseのDB名}.database.windows.net:1433;database=tos-db;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"
ドライバJarファイル:${ダウンロードしたJDBCのファイルパスを指定}
ドライバクラス:"com.microsoft.sqlserver.jdbc.SQLServerDriver"
ユーザ名:"${Azure SQL Databaseのユーザー}"
パスワード:"${Azure SQL Databaseのユーザーのパスワード}"
自動コミットを使用:チェックはしない
CSVファイルの読み込み
インポート対象のデータとして、以下のUTF8のCSV形式のファイル(ヘッダー付)を用意します。
time,name,age 2016/04/01 00:00:00,サイオス太郎,20 2017/05/31 00:00:00,ビッグデータ太郎,22
tFileInputDelimitedの設定
ファイル名/ストリーム:"${CSVファイルを配置したファイルパスを指定}"
CSVの行区切り文字:LF(\n)
フィールド区切り記号:","
CSVオプション:チェックする
ヘッダー:1
スキーマの編集:以下「※スキーマの設定」のとおり設定する
エンコード:UTF-8
※スキーマの設定
スキーマの編集にて、以下のスキーマを設定することでデータの取得が可能となります。
Azure SQL Databaseへのデータ挿入
JDBCを利用してクエリを発行するには、tJDBCOutputを利用します。また、このコンポーネントから結果を得るためには、 コンポーネントにスキーマを設定します。
tJDBCOutputの設定
既存の接続を使用:チェックする
コンポーネントリスト:(上記で設定した)tJDBCConnection_1
データ操作:挿入を指定
スキーマの編集:tFileInputDelimitedとリンク設定後に、(上記で設定した)tFileInputDelimitedと同じことを確認
Azure SQL Databaseからのデータ取得
JDBCを利用してデータを取得するには、tJDBCInputを利用します。また、このコンポーネントから結果を得るためには、コンポーネントにスキーマを設定します。
tJDBCInputの設定
既存の接続を使用:チェックする
コンポーネントリスト:(上記で設定した)tJDBCConnection_1
スキーマの編集:(上記で設定した)tFileInputDelimitedと同じとすること
テーブル名:"test_table"
クエリ:"SELECT * FROM (table_name) WHERE time = 1388588400"
各コンポーネント間のリンク設定
各コンポーネント間には、順序関係や依存関係を作成することができます。
上図の通り、処理フローを引くようには以下の設定をします。
tJDBCConnectionとtFileInputDelimitedとのリンク設定
tJDBCConnectionを右クリックすると表示される「トリガー」から「コンポーネントOKの場合」を選択した後にtFileInputDelimitedをクリックすると線が引かれる
tFileInputDelimitedとtJDBCOutputとのリンク設定
tFileInputDelimitedを右クリックすると表示される「ロウ」から「メイン」を選択した後にtJDBCOutputをクリックすると線が引かれる
tJDBCOutputとtJDBCInputとのリンク設定
tJDBCOutputを右クリックすると表示される「トリガー」から「コンポーネントOKの場合」を選択した後にtJDBCInputをクリックすると線が引かれる
tJDBCInputとtLogLowとのリンク設定
tJDBCInputを右クリックすると表示される「ロウ」から「メイン」を選択した後にtLogLowをクリックすると線が引かれる
tLogLowとtJDBCCommitとのリンク設定
tLogLowを右クリックすると表示される「トリガー」から「コンポーネントOKの場合」を選択した後にtJDBCCommitをクリックすると線が引かれる。
tJDBInputで取得したデータがジョブの実行後にtLogRowによって出力されます。
ジョブの実行
全ての設定が完了した後、ジョブの実行をします。 実行後、下図に示されるのジョブ実行のパネルにて、処理結果が表示されます。
CSVファイルのデータを挿入したテーブルからデータを取得した内容が、”|”区切りで表示されていることが分かります。
まとめ
以上のように、今回はAzure SQL Databaseとの連携でしたが、Talend Open Studio を利用すると、
簡単にデータソースとのデータ連携がノンプログラミングでできるようになります。