Talend Open Studioをはじめてみる（初心者）

# はじめに

OSSツールのTalend Open Studioが無料でも色々できると聞いたので
試してみようと思います。
ゴールは、BigQuery or CSV → 加工 → Salesforceの流れです。
今回はインストールから簡単な動作確認までやってみます。

# Talend Open Studioとは

https://www.talend.com/jp/products/talend-open-studio/

>OSSツールのTalend Open Studioを使用すると、基本的なデータパイプラインの構築を即座に開始できます。 ローカルにインストールされた、自分で制御可能なオープンソース環境から、シンプルなETLおよびデータ統合タスクを実行し、データのグラフィカルなプロファイルを取得して、ファイルを管理します。

JavaベースのETLツールで、GUIでの配置設定
Javaでの加工処理の記述も可能

https://dev.classmethod.jp/articles/talend_use_java/

# 環境

- macOS 12.4
- java version "11.0.15.1" 2022-04-22 LT
- Talend 8.0.1

https://help.talend.com/r/ja-JP/8.0/open-studio-installation-guide-linux/installing-and-configuring-talend-esb

:::note warn
12/11日現在、記事中ではTalend 8.0.1を使用していますが
Talend 8.0.1でエラーが発生する現象が起きているので、
7系をインストールすることをお勧めします。
:::

# Javeのセットアップ

この記事では、既に実行するmacでセットアップ済みのため書きません。

https://weblabo.oscasierra.net/java-install-oracle-jdk11-macosx/


# インストールする

https://www.talend.com/jp/products/talend-open-studio/

## 1.必要な項目を入力しインストーラーをダウンロードする

![Talend Open Studio：オープンソース(OSS)のETLと無料のデータ統合 _ Talend _ Talend.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/c3fa75b7-2de8-4262-b296-89ccac31050e.png)

ダウンロードしたdmgを開きインストラーを起動してください。

## 2.インストール

インストール先はデフォルトのままにしました。

![スクリーンショット 2022-12-10 23.29.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8a5a05a0-7b08-3b64-28a0-8c2beea44550.png)


![スクリーンショット 2022-12-10 23.30.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/c0da9aaf-594f-053c-95ae-4ed56570d472.png)

![スクリーンショット 2022-12-10 23.30.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/56daa2d9-5b24-d104-d1b6-b6d2c9e5b2f2.png)


# 触ってみる

CSV取り込み→不要カラム削除→CSV書き込み

この流れを作ろうと思います。

## 1.プロジェクトの作成

デフォルトの状態で作成しました。

![スクリーンショット 2022-12-10 23.43.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/ab6e7982-896b-5b7c-922e-3142e49c88b2.png)

### 画面の構成要素について

#### リポジトリ

ジョブの作成、メタデータの管理をする。

![スクリーンショット 2022-12-10 23.47.13のコピー3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8d84a9e1-9c76-c8e6-8052-b4282dc41c15.png)


#### デザインワークスペース

ジョブのデザインやレイアウトを行う。
実際にGUIでデータの変換や転送処理を並べたりする

![スクリーンショット 2022-12-10 23.47.13のコピー2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/1568a5b3-177c-7cab-6d51-7d207857ccb7.png)


#### 設定タブ

デザインワークスペースで選択した要素のプロパティの表示・編集を行うエリア

![スクリーンショット 2022-12-10 23.47.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/1f432879-ed2a-d5c5-d0e1-b6205656652f.png)


#### パレット

データの入出力に関係するコンポーネント等が置いてある。
BigQueryのコンポーネントもある。

![スクリーンショット 2022-12-10 23.47.13のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/a8697cfd-b846-0c5f-a393-17ab944b270d.png)

## 2. CSVファイルを取り込む

用意したCSVはこちら

```csv: member.csv
Id, FullName
1, "FirstName_1 LastName_1" 
2, "FirstName_2 LastName_2" 
```

### tFileInputDelimitedの定義-CSV読み取り

**tFileInputDelimited**コンポーネントを使います。
パレットからデザインワークスペースにドラッグ&ドロップします。

![スクリーンショット 2022-12-11 0.25.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/d56cbe4b-a6d6-5c89-a077-acddf2376ad6.png)

配置したコンポーネントをクリックし、設定を編集します。
作成したファイルへのパスへ`ファイル名/ストリーム`を変更、`フィールド区切り`を`","`に変更しました。

![スクリーンショット 2022-12-11 0.29.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/f300c896-164d-6f63-fd8d-59b941a5c548.png)

読み取り対象のデータ定義を行う


![スクリーンショット 2022-12-11 1.07.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/fba83fd9-5e89-42fd-e176-1f140f5ac583.png)



**tLogRow**コンポーネントを配置し、CSVが読み取れるか確認

コンポーネントを配置し、モードをテーブルに変更

![スクリーンショット 2022-12-11 0.39.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/6ce7b1e4-ee24-f130-ba33-16a293e68683.png)

#### 実行してみる

実行タブから実行ボタンをおしてみると以下のエラーが！

![スクリーンショット 2022-12-11 0.44.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/a4236641-ca78-147e-f038-a10cc6b102a7.png)

https://www.reichelblog.com/talend-error/

どうやらTalend 8.0.1で12/11日現在
設定のローカル言語が日本語だとエラーが起きるそうだ。

記事の通り
`Preferences>Talend>国際化`を開く
日本語から`Englishに`変更し `Apply and Close`をして再起動してみる。

![スクリーンショット 2022-12-11 0.43.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/47beb976-3cbd-df49-bc1c-743e6debfdfc.png)

再起動し、実行することができました。
無事CSVが読み取れていることを確認できました。

![スクリーンショット 2022-12-11 1.11.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/991b6e20-7d08-75e6-298d-8c84ab4477c2.png)


## 3. 不要カラム削除
### tMapの定義-CSVマッピング

**tMap**をCSVの入力とログ出力の間に配置しました

![スクリーンショット 2022-12-11 1.21.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/ed94b9e6-b59f-7698-8c26-c12f7c41487a.png)

**tMap**をダブルクリックしマッピングをします。


![スクリーンショット 2022-12-11 1.26.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/1a021908-6114-134a-b6d2-b81a49737eb9.png)

左側が元のデータ、右側が出力データです。
右側のFullNameカラムをremoveし、左のIdと右のIdをドラッグ&ドロップで紐づけました。

![スクリーンショット 2022-12-11 1.27.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/78893c55-0ec2-2344-47d6-0fad6075398b.png)

### 実行してみる

Idのみの出力になりました！
次はCSVに出力してみようと思います。

![スクリーンショット 2022-12-11 1.31.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/f3baa0a9-b64b-0f82-85b5-2c8a79adcc56.png)

## 4. CSV出力

### tFileOutputDelimitedの定義-CSV出力

**tFileOutputDelimited**Log出力の後ろにつけました。

tFileOutputDelimitedの設定に関しては、
区切り文字を`","`にヘッダーを含めるにチェックを入れました。

![スクリーンショット 2022-12-11 1.36.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/7347b029-02d3-4609-0b2c-7fa16a22fe4d.png)

CSV出力されました。

```csv: out.csv
Id
1
2
```

# 最後に

普段はEmbulkを触っているのでこういったGUIのものを触るのは初めてですが、
慣れれば複雑なものを加工するみたいなことはできそうです。
個人的には、定期実行とか転送はしないけどデータの加工だけしたい！みたいなときにCSVとかで吐き出して有効活用して効率あげたいなと思いました。
コンポーネントのこと覚えるのがまだまだ時間かかりそうです。

では次は、BigQuery→加工→CSV
という流れに挑戦してみようと思います。

# 参考にさせていただいた記事

https://qiita.com/airkoda/items/a837d3c5d851d98d2612

https://dev.classmethod.jp/articles/talend_job_define_1/

https://www.reichelblog.com/talend-error/