Talend Open StudioでAzure SQL Databaseと連携する

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

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」をダブルクリックすると、ライセンスへの同意を求める画面が表示されます。
input

ライセンス同意後に表示されるプロジェクト作成画面で、新規プロジェクトを作成します。
input

プロジェクトを開いた後、新しくジョブを作成します。
input

Talendの利用方法

Talendでは、1つ1つの機能をコンポーネントというパーツで提供しており、そのコンポーネントを相互に組み合わせることで、処理のフローを記述することができます。

下図のとおり、以下の処理フローをTalend Open Studio for Data Integrationで作成していきます。

  1. JDBC経由でAzure SQL Databaseへのデータインポート
  2. JDBC経由でAzure SQL Databaseからデータ取得
  3. 確認のため、取得したデータを標準出力
    input

以下で、各コンポーネントの設定方法を説明していきます。

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

※スキーマの設定
スキーマの編集にて、以下のスキーマを設定することでデータの取得が可能となります。
input

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ファイルのデータを挿入したテーブルからデータを取得した内容が、”|”区切りで表示されていることが分かります。
tos_job_flow_complete

まとめ

以上のように、今回はAzure SQL Databaseとの連携でしたが、Talend Open Studio を利用すると、
簡単にデータソースとのデータ連携がノンプログラミングでできるようになります。

斎藤@SSTD
アバター画像
About サイオステクノロジーの中の人 10 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる