なにかのきろく

ひっそりと戻ってきて自分のためになるべく頑張る・・・

Talendを使っている感を出すぞww

今回はTalendで用意されている固有のコンポーネントを利用して

データを成形してみようと思います。


利用してみるコンポーネントは以下の通り

・tPostgresqlInput
データを抽出する。Inputデータを保持するテーブルを用意する。

・tJoin
流れてきた複数データを結合する。設定したキー項目で結合する。
SQLのinner join、outer joinと同じです。

・tAggregateRow
流れてきたデータを集計する。設定したキー項目で集計する。
COUNT、SUM、MAX、MINなどがある。

・tSortRow
流れてきたデータを並び変える。設定したキー項目で並び替えする。
降順、昇順です。

Talendのジョブはこんな感じです。

f:id:seyoshinori:20160616201720p:plain

 

DBはPostgreSQLを用意した。

f:id:seyoshinori:20160616201807p:plain


バージョンはPostgreSQL 9.0.22です。

改めて環境を整理

※ーーーーーーーかんきょーーーーーーー※
・Windows7Pro 64bitオペレーティングシステム
・メモリ 8GB、CPU Corei5
java version "1.7.0_79"
 Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
 Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
PostgreSQL 9.0.22
※ーーーーーーーかんきょーーーーーーー※

ここで落とし穴にはまった。
Charcter(n)で指定したカラムを、
Talendでchar/character指定、桁数も指定してデータを抽出した。

しかし、抽出出来るデータが1桁だけになってしまう。
どーやらTalendでは"char"と認識されている?ようだ。

Talend側でstringで抽出するように変更したが、
DBの型に依存しているみたいでstringに変更出来ない。
仕方なくテーブルのカラムを
character(n)⇒charcter varying(n)に変更した・・・。

 

では各コンポーネントの簡単な説明です。


・tPostgresqlInput
設定は以下の通りです。
抽出したいカラムを絞るためSQLは直接指定した。

f:id:seyoshinori:20160616202336p:plain

・tJoin
設定は以下の通りです。
結合キーを指定する。「出力に参照カラムを含む」をチェックしないと、
店舗マスタからのデータを次のコンポーネントに流せない。
ここで、店舗名と売上の2つの項目を抽出する。

f:id:seyoshinori:20160616202409p:plain

f:id:seyoshinori:20160616202446p:plain

・tAggregateRow
「グループ化」項目にはSQLで言うgroup byに入る項目を、
「操作」は計算する項目を指定する。「ファンクション」で計算方法を指定する。

f:id:seyoshinori:20160616202544p:plain

f:id:seyoshinori:20160616202605p:plain

・tSortRow
指定したカラムでソートします。
このコンポーネントだと簡単な設定だけです。
※他のコンポーネントなら難しことが出来るかもしれません。

f:id:seyoshinori:20160616202624p:plain


実行結果はこちらです。
OUTPUTを雑にしてしまいました。

f:id:seyoshinori:20160616202655p:plain

JOBの実行結果はこちらです。

f:id:seyoshinori:20160616202712p:plain

 


End